summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-09-25 21:36:01 +0200
committerStefan Haller <stefan@haller-berlin.de>2023-10-08 18:45:36 +0200
commitfd9d7cb7bb6f143147f77c6481eeeaf7cf8e4734 (patch)
treef23d74442bd9975d543d061dbecf9ce06675444b
parent3d6965ccbbd992adc7cd68015dfd38309cbc8835 (diff)
Disallow checking out another branch while the current one is being pulled
-rw-r--r--pkg/gui/controllers/branches_controller.go19
-rw-r--r--pkg/i18n/english.go2
2 files changed, 18 insertions, 3 deletions
diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go
index 407dc135a..403c51b4f 100644
--- a/pkg/gui/controllers/branches_controller.go
+++ b/pkg/gui/controllers/branches_controller.go
@@ -34,9 +34,10 @@ func NewBranchesController(
func (self *BranchesController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
return []*types.Binding{
{
- Key: opts.GetKey(opts.Config.Universal.Select),
- Handler: self.checkSelected(self.press),
- Description: self.c.Tr.Checkout,
+ Key: opts.GetKey(opts.Config.Universal.Select),
+ Handler: self.checkSelected(self.press),
+ GetDisabledReason: self.getDisabledReasonForPress,
+ Description: self.c.Tr.Checkout,
},
{
Key: opts.GetKey(opts.Config.Universal.New),
@@ -299,6 +300,18 @@ func (self *BranchesController) press(selectedBranch *models.Branch) error {
return self.c.Helpers().Refs.CheckoutRef(selectedBranch.Name, types.CheckoutRefOptions{})
}
+func (self *BranchesController) getDisabledReasonForPress() string {
+ currentBranch := self.c.Helpers().Refs.GetCheckedOutRef()
+ if currentBranch != nil {
+ op := self.c.State().GetItemOperation(currentBranch)
+ if op == types.ItemOperationFastForwarding || op == types.ItemOperationPulling {
+ return self.c.Tr.CantCheckoutBranchWhilePulling
+ }
+ }
+
+ return ""
+}
+
func (self *BranchesController) worktreeForBranch(branch *models.Branch) (*models.Worktree, bool) {
return git_commands.WorktreeForBranch(branch, self.c.Model().Worktrees)
}
diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go
index 0ffeccdbc..29f507b3c 100644
--- a/pkg/i18n/english.go
+++ b/pkg/i18n/english.go
@@ -57,6 +57,7 @@ type TranslationSet struct {
ResetFilter string
MergeConflictsTitle string
Checkout string
+ CantCheckoutBranchWhilePulling string
NoChangedFiles string
SoftReset string
AlreadyCheckedOutBranch string
@@ -846,6 +847,7 @@ func EnglishTranslationSet() TranslationSet {
Scroll: "Scroll",
MergeConflictsTitle: "Merge conflicts",
Checkout: "Checkout",
+ CantCheckoutBranchWhilePulling: "You cannot checkout another branch while pulling the current branch",
FileFilter: "Filter files by status",
FilterStagedFiles: "Show only staged files",
FilterUnstagedFiles: "Show only unstaged files",