mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-25 12:24:47 +02:00
chore(git_commands): support old git version (git rebase --empty=keep
)
This commit is contained in:
parent
88d4313970
commit
30656b5ac6
@ -181,12 +181,18 @@ func (self *RebaseCommands) PrepareInteractiveRebaseCommand(opts PrepareInteract
|
|||||||
debug = "TRUE"
|
debug = "TRUE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emptyArg := " --empty=keep"
|
||||||
|
if self.version.IsOlderThan(2, 26, 0) {
|
||||||
|
emptyArg = ""
|
||||||
|
}
|
||||||
|
|
||||||
rebaseMergesArg := " --rebase-merges"
|
rebaseMergesArg := " --rebase-merges"
|
||||||
if self.version.IsOlderThan(2, 22, 0) {
|
if self.version.IsOlderThan(2, 22, 0) {
|
||||||
rebaseMergesArg = ""
|
rebaseMergesArg = ""
|
||||||
}
|
}
|
||||||
cmdStr := fmt.Sprintf("git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash%s %s",
|
|
||||||
rebaseMergesArg, opts.baseShaOrRoot)
|
cmdStr := fmt.Sprintf("git rebase --interactive --autostash --keep-empty%s --no-autosquash%s %s",
|
||||||
|
emptyArg, rebaseMergesArg, opts.baseShaOrRoot)
|
||||||
self.Log.WithField("command", cmdStr).Debug("RunCommand")
|
self.Log.WithField("command", cmdStr).Debug("RunCommand")
|
||||||
|
|
||||||
cmdObj := self.cmd.New(cmdStr)
|
cmdObj := self.cmd.New(cmdStr)
|
||||||
|
@ -16,37 +16,60 @@ import (
|
|||||||
|
|
||||||
func TestRebaseRebaseBranch(t *testing.T) {
|
func TestRebaseRebaseBranch(t *testing.T) {
|
||||||
type scenario struct {
|
type scenario struct {
|
||||||
testName string
|
testName string
|
||||||
arg string
|
arg string
|
||||||
runner *oscommands.FakeCmdObjRunner
|
gitVersion *GitVersion
|
||||||
test func(error)
|
runner *oscommands.FakeCmdObjRunner
|
||||||
|
test func(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
scenarios := []scenario{
|
scenarios := []scenario{
|
||||||
{
|
{
|
||||||
testName: "successful rebase",
|
testName: "successful rebase",
|
||||||
arg: "master",
|
arg: "master",
|
||||||
|
gitVersion: &GitVersion{2, 26, 0, ""},
|
||||||
runner: oscommands.NewFakeRunner(t).
|
runner: oscommands.NewFakeRunner(t).
|
||||||
Expect(`git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash master`, "", nil),
|
Expect(`git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash --rebase-merges master`, "", nil),
|
||||||
test: func(err error) {
|
test: func(err error) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
testName: "unsuccessful rebase",
|
testName: "unsuccessful rebase",
|
||||||
arg: "master",
|
arg: "master",
|
||||||
|
gitVersion: &GitVersion{2, 26, 0, ""},
|
||||||
runner: oscommands.NewFakeRunner(t).
|
runner: oscommands.NewFakeRunner(t).
|
||||||
Expect(`git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash master`, "", errors.New("error")),
|
Expect(`git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash --rebase-merges master`, "", errors.New("error")),
|
||||||
test: func(err error) {
|
test: func(err error) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
testName: "successful rebase (< 2.26.0)",
|
||||||
|
arg: "master",
|
||||||
|
gitVersion: &GitVersion{2, 25, 5, ""},
|
||||||
|
runner: oscommands.NewFakeRunner(t).
|
||||||
|
Expect(`git rebase --interactive --autostash --keep-empty --no-autosquash --rebase-merges master`, "", nil),
|
||||||
|
test: func(err error) {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
testName: "successful rebase (< 2.22.0)",
|
||||||
|
arg: "master",
|
||||||
|
gitVersion: &GitVersion{2, 21, 9, ""},
|
||||||
|
runner: oscommands.NewFakeRunner(t).
|
||||||
|
Expect(`git rebase --interactive --autostash --keep-empty --no-autosquash master`, "", nil),
|
||||||
|
test: func(err error) {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, s := range scenarios {
|
for _, s := range scenarios {
|
||||||
s := s
|
s := s
|
||||||
t.Run(s.testName, func(t *testing.T) {
|
t.Run(s.testName, func(t *testing.T) {
|
||||||
instance := buildRebaseCommands(commonDeps{runner: s.runner})
|
instance := buildRebaseCommands(commonDeps{runner: s.runner, gitVersion: s.gitVersion})
|
||||||
s.test(instance.RebaseBranch(s.arg))
|
s.test(instance.RebaseBranch(s.arg))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -126,7 +149,7 @@ func TestRebaseDiscardOldFileChanges(t *testing.T) {
|
|||||||
commitIndex: 0,
|
commitIndex: 0,
|
||||||
fileName: "test999.txt",
|
fileName: "test999.txt",
|
||||||
runner: oscommands.NewFakeRunner(t).
|
runner: oscommands.NewFakeRunner(t).
|
||||||
Expect(`git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash abcdef`, "", nil).
|
Expect(`git rebase --interactive --autostash --keep-empty --empty=keep --no-autosquash --rebase-merges abcdef`, "", nil).
|
||||||
Expect(`git cat-file -e HEAD^:"test999.txt"`, "", nil).
|
Expect(`git cat-file -e HEAD^:"test999.txt"`, "", nil).
|
||||||
Expect(`git checkout HEAD^ -- "test999.txt"`, "", nil).
|
Expect(`git checkout HEAD^ -- "test999.txt"`, "", nil).
|
||||||
Expect(`git commit --amend --no-edit --allow-empty`, "", nil).
|
Expect(`git commit --amend --no-edit --allow-empty`, "", nil).
|
||||||
@ -143,8 +166,9 @@ func TestRebaseDiscardOldFileChanges(t *testing.T) {
|
|||||||
s := s
|
s := s
|
||||||
t.Run(s.testName, func(t *testing.T) {
|
t.Run(s.testName, func(t *testing.T) {
|
||||||
instance := buildRebaseCommands(commonDeps{
|
instance := buildRebaseCommands(commonDeps{
|
||||||
runner: s.runner,
|
runner: s.runner,
|
||||||
gitConfig: git_config.NewFakeGitConfig(s.gitConfigMockResponses),
|
gitVersion: &GitVersion{2, 26, 0, ""},
|
||||||
|
gitConfig: git_config.NewFakeGitConfig(s.gitConfigMockResponses),
|
||||||
})
|
})
|
||||||
|
|
||||||
s.test(instance.DiscardOldFileChanges(s.commits, s.commitIndex, s.fileName))
|
s.test(instance.DiscardOldFileChanges(s.commits, s.commitIndex, s.fileName))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user