From c739357eb91e142905af38031aad9f1a87eb0df5 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Wed, 9 Jul 2025 11:48:23 +0200 Subject: [PATCH] Remove git version specific code for versions we no longer support --- pkg/commands/git_commands/commit_loader.go | 3 +- pkg/commands/git_commands/rebase.go | 2 +- pkg/commands/git_commands/repo_paths.go | 16 ++--------- pkg/commands/git_commands/repo_paths_test.go | 13 ++------- pkg/commands/git_commands/sync.go | 2 +- pkg/commands/git_commands/sync_test.go | 8 +++--- pkg/commands/git_commands/worktree_loader.go | 2 +- .../git_commands/worktree_loader_test.go | 6 +--- .../tests/commit/create_amend_commit.go | 28 +++++++++---------- 9 files changed, 27 insertions(+), 53 deletions(-) diff --git a/pkg/commands/git_commands/commit_loader.go b/pkg/commands/git_commands/commit_loader.go index 49d43290d..4a899379f 100644 --- a/pkg/commands/git_commands/commit_loader.go +++ b/pkg/commands/git_commands/commit_loader.go @@ -249,8 +249,7 @@ func (self *CommitLoader) extractCommitFromLine(hashPool *utils.StringPool, line } func (self *CommitLoader) getHydratedRebasingCommits(hashPool *utils.StringPool, addConflictingCommit bool) ([]*models.Commit, error) { - todoFileHasShortHashes := self.version.IsOlderThan(2, 25, 2) - return self.getHydratedTodoCommits(hashPool, self.getRebasingCommits(hashPool, addConflictingCommit), todoFileHasShortHashes) + return self.getHydratedTodoCommits(hashPool, self.getRebasingCommits(hashPool, addConflictingCommit), false) } func (self *CommitLoader) getHydratedSequencerCommits(hashPool *utils.StringPool, workingTreeState models.WorkingTreeState) ([]*models.Commit, error) { diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index 8c52dc62f..d882d9b1a 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -218,7 +218,7 @@ func (self *RebaseCommands) PrepareInteractiveRebaseCommand(opts PrepareInteract Arg("--interactive"). Arg("--autostash"). Arg("--keep-empty"). - ArgIf(opts.keepCommitsThatBecomeEmpty && self.version.IsAtLeast(2, 26, 0), "--empty=keep"). + ArgIf(opts.keepCommitsThatBecomeEmpty, "--empty=keep"). Arg("--no-autosquash"). Arg("--rebase-merges"). ArgIf(opts.onto != "", "--onto", opts.onto). diff --git a/pkg/commands/git_commands/repo_paths.go b/pkg/commands/git_commands/repo_paths.go index 543ab5cd0..c64debfc5 100644 --- a/pkg/commands/git_commands/repo_paths.go +++ b/pkg/commands/git_commands/repo_paths.go @@ -21,8 +21,6 @@ type RepoPaths struct { isBareRepo bool } -var gitPathFormatVersion = GitVersion{2, 31, 0, ""} - // Path to the current worktree. If we're in the main worktree, this will // be the same as RepoPath() func (self *RepoPaths) WorktreePath() string { @@ -79,15 +77,14 @@ func GetRepoPaths( if err != nil { return nil, err } - return GetRepoPathsForDir(cwd, cmd, version) + return GetRepoPathsForDir(cwd, cmd) } func GetRepoPathsForDir( dir string, cmd oscommands.ICmdObjBuilder, - version *GitVersion, ) (*RepoPaths, error) { - gitDirOutput, err := callGitRevParseWithDir(cmd, version, dir, "--show-toplevel", "--absolute-git-dir", "--git-common-dir", "--is-bare-repository", "--show-superproject-working-tree") + gitDirOutput, err := callGitRevParseWithDir(cmd, dir, "--show-toplevel", "--absolute-git-dir", "--git-common-dir", "--is-bare-repository", "--show-superproject-working-tree") if err != nil { return nil, err } @@ -96,12 +93,6 @@ func GetRepoPathsForDir( worktreePath := gitDirResults[0] worktreeGitDirPath := gitDirResults[1] repoGitDirPath := gitDirResults[2] - if version.IsOlderThanVersion(&gitPathFormatVersion) { - repoGitDirPath, err = filepath.Abs(repoGitDirPath) - if err != nil { - return nil, err - } - } isBareRepo := gitDirResults[3] == "true" // If we're in a submodule, --show-superproject-working-tree will return @@ -131,11 +122,10 @@ func GetRepoPathsForDir( func callGitRevParseWithDir( cmd oscommands.ICmdObjBuilder, - version *GitVersion, dir string, gitRevArgs ...string, ) (string, error) { - gitRevParse := NewGitCmd("rev-parse").ArgIf(version.IsAtLeastVersion(&gitPathFormatVersion), "--path-format=absolute").Arg(gitRevArgs...) + gitRevParse := NewGitCmd("rev-parse").Arg("--path-format=absolute").Arg(gitRevArgs...) if dir != "" { gitRevParse.Dir(dir) } diff --git a/pkg/commands/git_commands/repo_paths_test.go b/pkg/commands/git_commands/repo_paths_test.go index 2d02a9ed3..29c40acee 100644 --- a/pkg/commands/git_commands/repo_paths_test.go +++ b/pkg/commands/git_commands/repo_paths_test.go @@ -194,22 +194,13 @@ func TestGetRepoPaths(t *testing.T) { runner := oscommands.NewFakeRunner(t) cmd := oscommands.NewDummyCmdObjBuilder(runner) - version, err := GetGitVersion(oscommands.NewDummyOSCommand()) - if err != nil { - t.Fatal(err) - } - getRevParseArgs := func() []string { - args := []string{"rev-parse"} - if version.IsAtLeast(2, 31, 0) { - args = append(args, "--path-format=absolute") - } - return args + return []string{"rev-parse", "--path-format=absolute"} } // prepare the filesystem for the scenario s.BeforeFunc(runner, getRevParseArgs) - repoPaths, err := GetRepoPathsForDir("", cmd, version) + repoPaths, err := GetRepoPathsForDir("", cmd) // check the error and the paths if s.Err != nil { diff --git a/pkg/commands/git_commands/sync.go b/pkg/commands/git_commands/sync.go index 63fcb9602..0f5559a7b 100644 --- a/pkg/commands/git_commands/sync.go +++ b/pkg/commands/git_commands/sync.go @@ -59,7 +59,7 @@ func (self *SyncCommands) fetchCommandBuilder(fetchAll bool) *GitCommandBuilder ArgIf(fetchAll, "--all"). // avoid writing to .git/FETCH_HEAD; this allows running a pull // concurrently without getting errors - ArgIf(self.version.IsAtLeast(2, 29, 0), "--no-write-fetch-head") + Arg("--no-write-fetch-head") } func (self *SyncCommands) FetchCmdObj(task gocui.Task) *oscommands.CmdObj { diff --git a/pkg/commands/git_commands/sync_test.go b/pkg/commands/git_commands/sync_test.go index 8653f8d3c..4254788d8 100644 --- a/pkg/commands/git_commands/sync_test.go +++ b/pkg/commands/git_commands/sync_test.go @@ -119,7 +119,7 @@ func TestSyncFetch(t *testing.T) { test: func(cmdObj *oscommands.CmdObj) { assert.True(t, cmdObj.ShouldLog()) assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT) - assert.Equal(t, cmdObj.Args(), []string{"git", "fetch"}) + assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--no-write-fetch-head"}) }, }, { @@ -128,7 +128,7 @@ func TestSyncFetch(t *testing.T) { test: func(cmdObj *oscommands.CmdObj) { assert.True(t, cmdObj.ShouldLog()) assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT) - assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all"}) + assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all", "--no-write-fetch-head"}) }, }, } @@ -157,7 +157,7 @@ func TestSyncFetchBackground(t *testing.T) { test: func(cmdObj *oscommands.CmdObj) { assert.False(t, cmdObj.ShouldLog()) assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL) - assert.Equal(t, cmdObj.Args(), []string{"git", "fetch"}) + assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--no-write-fetch-head"}) }, }, { @@ -166,7 +166,7 @@ func TestSyncFetchBackground(t *testing.T) { test: func(cmdObj *oscommands.CmdObj) { assert.False(t, cmdObj.ShouldLog()) assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL) - assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all"}) + assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all", "--no-write-fetch-head"}) }, }, } diff --git a/pkg/commands/git_commands/worktree_loader.go b/pkg/commands/git_commands/worktree_loader.go index a6c39dbce..42881f2fc 100644 --- a/pkg/commands/git_commands/worktree_loader.go +++ b/pkg/commands/git_commands/worktree_loader.go @@ -82,7 +82,7 @@ func (self *WorktreeLoader) GetWorktrees() ([]*models.Worktree, error) { if worktree.IsPathMissing { return } - gitDir, err := callGitRevParseWithDir(self.cmd, self.version, worktree.Path, "--absolute-git-dir") + gitDir, err := callGitRevParseWithDir(self.cmd, worktree.Path, "--absolute-git-dir") if err != nil { self.Log.Warnf("Could not find git dir for worktree %s: %v", worktree.Path, err) return diff --git a/pkg/commands/git_commands/worktree_loader_test.go b/pkg/commands/git_commands/worktree_loader_test.go index ba462729f..3d8c3ad39 100644 --- a/pkg/commands/git_commands/worktree_loader_test.go +++ b/pkg/commands/git_commands/worktree_loader_test.go @@ -190,11 +190,7 @@ branch refs/heads/mybranch-worktree } getRevParseArgs := func() []string { - args := []string{"rev-parse"} - if version.IsAtLeast(2, 31, 0) { - args = append(args, "--path-format=absolute") - } - return args + return []string{"rev-parse", "--path-format=absolute"} } s.before(runner, fs, getRevParseArgs) diff --git a/pkg/integration/tests/commit/create_amend_commit.go b/pkg/integration/tests/commit/create_amend_commit.go index 5777b2abb..474e24099 100644 --- a/pkg/integration/tests/commit/create_amend_commit.go +++ b/pkg/integration/tests/commit/create_amend_commit.go @@ -41,20 +41,18 @@ var CreateAmendCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 01"), ) - if t.Git().Version().IsAtLeast(2, 32, 0) { // Support for auto-squashing "amend!" commits was added in git 2.32.0 - t.Views().Commits(). - Press(keys.Commits.SquashAboveCommits). - Tap(func() { - t.ExpectPopup().Menu(). - Title(Equals("Apply fixup commits")). - Select(Contains("Above the selected commit")). - Confirm() - }). - Lines( - Contains("commit 03"), - Contains("commit 02 amended").IsSelected(), - Contains("commit 01"), - ) - } + t.Views().Commits(). + Press(keys.Commits.SquashAboveCommits). + Tap(func() { + t.ExpectPopup().Menu(). + Title(Equals("Apply fixup commits")). + Select(Contains("Above the selected commit")). + Confirm() + }). + Lines( + Contains("commit 03"), + Contains("commit 02 amended").IsSelected(), + Contains("commit 01"), + ) }, })