mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	Hide worktree functionality on old git versions
This commit is contained in:
		| @@ -38,6 +38,7 @@ type GitCommand struct { | ||||
| 	WorkingTree *git_commands.WorkingTreeCommands | ||||
| 	Bisect      *git_commands.BisectCommands | ||||
| 	Worktree    *git_commands.WorktreeCommands | ||||
| 	Version     *git_commands.GitVersion | ||||
|  | ||||
| 	Loaders Loaders | ||||
| } | ||||
| @@ -159,6 +160,7 @@ func NewGitCommandAux( | ||||
| 		Bisect:      bisectCommands, | ||||
| 		WorkingTree: workingTreeCommands, | ||||
| 		Worktree:    worktreeCommands, | ||||
| 		Version:     version, | ||||
| 		Loaders: Loaders{ | ||||
| 			BranchLoader:       branchLoader, | ||||
| 			CommitFileLoader:   commitFileLoader, | ||||
|   | ||||
| @@ -69,3 +69,7 @@ func (v *GitVersion) IsOlderThan(major, minor, patch int) bool { | ||||
| func (v *GitVersion) IsOlderThanVersion(version *GitVersion) bool { | ||||
| 	return v.IsOlderThan(version.Major, version.Minor, version.Patch) | ||||
| } | ||||
|  | ||||
| func (v *GitVersion) SupportsWorktrees() bool { | ||||
| 	return !v.IsOlderThan(2, 5, 0) | ||||
| } | ||||
|   | ||||
| @@ -242,16 +242,18 @@ func (gui *Gui) resetHelpersAndControllers() { | ||||
| 		controllers.AttachControllers(context, controllers.NewBasicCommitsController(common, context)) | ||||
| 	} | ||||
|  | ||||
| 	for _, context := range []controllers.CanViewWorktreeOptions{ | ||||
| 		gui.State.Contexts.LocalCommits, | ||||
| 		gui.State.Contexts.ReflogCommits, | ||||
| 		gui.State.Contexts.SubCommits, | ||||
| 		gui.State.Contexts.Stash, | ||||
| 		gui.State.Contexts.Branches, | ||||
| 		gui.State.Contexts.RemoteBranches, | ||||
| 		gui.State.Contexts.Tags, | ||||
| 	} { | ||||
| 		controllers.AttachControllers(context, controllers.NewWorktreeOptionsController(common, context)) | ||||
| 	if gui.c.Git().Version.SupportsWorktrees() { | ||||
| 		for _, context := range []controllers.CanViewWorktreeOptions{ | ||||
| 			gui.State.Contexts.LocalCommits, | ||||
| 			gui.State.Contexts.ReflogCommits, | ||||
| 			gui.State.Contexts.SubCommits, | ||||
| 			gui.State.Contexts.Stash, | ||||
| 			gui.State.Contexts.Branches, | ||||
| 			gui.State.Contexts.RemoteBranches, | ||||
| 			gui.State.Contexts.Tags, | ||||
| 		} { | ||||
| 			controllers.AttachControllers(context, controllers.NewWorktreeOptionsController(common, context)) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	controllers.AttachControllers(gui.State.Contexts.ReflogCommits, | ||||
|   | ||||
| @@ -598,6 +598,11 @@ func (self *RefreshHelper) refreshRemotes() error { | ||||
| } | ||||
|  | ||||
| func (self *RefreshHelper) refreshWorktrees() error { | ||||
| 	if !self.c.Git().Version.SupportsWorktrees() { | ||||
| 		self.c.Model().Worktrees = []*models.Worktree{} | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	worktrees, err := self.c.Git().Loaders.Worktrees.GetWorktrees() | ||||
| 	if err != nil { | ||||
| 		return self.c.Error(err) | ||||
|   | ||||
| @@ -566,25 +566,32 @@ func (gui *Gui) initGocui(headless bool, test integrationTypes.IntegrationTest) | ||||
| } | ||||
|  | ||||
| func (gui *Gui) viewTabMap() map[string][]context.TabView { | ||||
| 	return map[string][]context.TabView{ | ||||
| 		"branches": { | ||||
| 			{ | ||||
| 				Tab:      gui.c.Tr.LocalBranchesTitle, | ||||
| 				ViewName: "localBranches", | ||||
| 			}, | ||||
| 			{ | ||||
| 				Tab:      gui.c.Tr.RemotesTitle, | ||||
| 				ViewName: "remotes", | ||||
| 			}, | ||||
| 			{ | ||||
| 				Tab:      gui.c.Tr.TagsTitle, | ||||
| 				ViewName: "tags", | ||||
| 			}, | ||||
| 			{ | ||||
| 	branchesTabs := []context.TabView{ | ||||
| 		{ | ||||
| 			Tab:      gui.c.Tr.LocalBranchesTitle, | ||||
| 			ViewName: "localBranches", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Tab:      gui.c.Tr.RemotesTitle, | ||||
| 			ViewName: "remotes", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Tab:      gui.c.Tr.TagsTitle, | ||||
| 			ViewName: "tags", | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	if gui.c.Git().Version.SupportsWorktrees() { | ||||
| 		branchesTabs = append(branchesTabs, | ||||
| 			context.TabView{ | ||||
| 				Tab:      gui.c.Tr.WorktreesTitle, | ||||
| 				ViewName: "worktrees", | ||||
| 			}, | ||||
| 		}, | ||||
| 		) | ||||
| 	} | ||||
|  | ||||
| 	return map[string][]context.TabView{ | ||||
| 		"branches": branchesTabs, | ||||
| 		"commits": { | ||||
| 			{ | ||||
| 				Tab:      gui.c.Tr.CommitsTitle, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user