mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 07:36:27 -04:00
When a rebase (or multi-commit cherry-pick or revert) stops with a conflict, it is often useful to look at the diff of the "<-- CONFLICT" commit to double-check that the conflict resolution matches the diff of the original commit. To make that easier, select that commit automatically.
100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
package sync
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Pull with an interactive rebase strategy, where a conflict occurs",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {},
|
|
SetupRepo: func(shell *Shell) {
|
|
shell.CreateFileAndAdd("file", "content1")
|
|
shell.Commit("one")
|
|
shell.UpdateFileAndAdd("file", "content2")
|
|
shell.Commit("two")
|
|
shell.CreateFileAndAdd("file3", "content3")
|
|
shell.Commit("three")
|
|
|
|
shell.CloneIntoRemote("origin")
|
|
|
|
shell.SetBranchUpstream("master", "origin/master")
|
|
|
|
shell.HardReset("HEAD^^")
|
|
shell.UpdateFileAndAdd("file", "content4")
|
|
shell.Commit("four")
|
|
shell.CreateFileAndAdd("file5", "content5")
|
|
shell.Commit("five")
|
|
|
|
shell.SetConfig("pull.rebase", "interactive")
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Commits().
|
|
Lines(
|
|
Contains("five"),
|
|
Contains("four"),
|
|
Contains("one"),
|
|
)
|
|
|
|
t.Views().Status().Content(Equals("↓2↑2 repo → master"))
|
|
|
|
t.Views().Files().
|
|
IsFocused().
|
|
Press(keys.Universal.Pull)
|
|
|
|
t.Common().AcknowledgeConflicts()
|
|
|
|
t.Views().Commits().
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
Contains("pick").Contains("five"),
|
|
Contains("pick").Contains("CONFLICT").Contains("four").IsSelected(),
|
|
Contains("─── Commits"),
|
|
Contains("three"),
|
|
Contains("two"),
|
|
Contains("one"),
|
|
)
|
|
|
|
t.Views().Files().
|
|
IsFocused().
|
|
Lines(
|
|
Contains("UU").Contains("file"),
|
|
).
|
|
PressEnter()
|
|
|
|
t.Views().MergeConflicts().
|
|
IsFocused().
|
|
TopLines(
|
|
Contains("<<<<<<< HEAD"),
|
|
Contains("content2"),
|
|
Contains("======="),
|
|
Contains("content4"),
|
|
Contains(">>>>>>>"),
|
|
).
|
|
SelectNextItem().
|
|
PressPrimaryAction() // choose 'content4'
|
|
|
|
t.Common().ContinueOnConflictsResolved("rebase")
|
|
|
|
t.Views().Status().Content(Equals("↑2 repo → master"))
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("five"),
|
|
Contains("four").IsSelected(),
|
|
Contains("three"),
|
|
Contains("two"),
|
|
Contains("one"),
|
|
)
|
|
|
|
t.Views().Main().
|
|
Content(
|
|
Contains("-content2").
|
|
Contains("+content4"),
|
|
)
|
|
},
|
|
})
|