mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-11-23 16:22:24 +03:00
Replace merge-tool with merge options menu that allows resolving all conflicts for selected files as ours, theirs, or union, while still providing access to the merge tool.
177 lines
4.1 KiB
Go
177 lines
4.1 KiB
Go
package shared
|
|
|
|
import (
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var OriginalFileContent = `
|
|
This
|
|
Is
|
|
The
|
|
Original
|
|
File
|
|
`
|
|
|
|
var FirstChangeFileContent = `
|
|
This
|
|
Is
|
|
The
|
|
First Change
|
|
File
|
|
`
|
|
|
|
var SecondChangeFileContent = `
|
|
This
|
|
Is
|
|
The
|
|
Second Change
|
|
File
|
|
`
|
|
|
|
// prepares us for a rebase/merge that has conflicts
|
|
var MergeConflictsSetup = func(shell *Shell) {
|
|
shell.
|
|
NewBranch("original-branch").
|
|
EmptyCommit("one").
|
|
EmptyCommit("two").
|
|
EmptyCommit("three").
|
|
CreateFileAndAdd("file", OriginalFileContent).
|
|
Commit("original").
|
|
NewBranch("first-change-branch").
|
|
UpdateFileAndAdd("file", FirstChangeFileContent).
|
|
Commit("first change").
|
|
Checkout("original-branch").
|
|
NewBranch("second-change-branch").
|
|
UpdateFileAndAdd("file", SecondChangeFileContent).
|
|
Commit("second change").
|
|
EmptyCommit("second-change-branch unrelated change").
|
|
Checkout("first-change-branch")
|
|
}
|
|
|
|
var CreateMergeConflictFile = func(shell *Shell) {
|
|
MergeConflictsSetup(shell)
|
|
|
|
shell.RunCommandExpectError([]string{"git", "merge", "--no-edit", "second-change-branch"})
|
|
}
|
|
|
|
var CreateMergeCommit = func(shell *Shell) {
|
|
CreateMergeConflictFile(shell)
|
|
shell.UpdateFileAndAdd("file", SecondChangeFileContent)
|
|
shell.ContinueMerge()
|
|
}
|
|
|
|
// creates a merge conflict where there are two files with conflicts and a separate file without conflicts
|
|
var CreateMergeConflictFiles = func(shell *Shell) {
|
|
shell.
|
|
NewBranch("original-branch").
|
|
EmptyCommit("one").
|
|
EmptyCommit("two").
|
|
EmptyCommit("three").
|
|
CreateFileAndAdd("file1", OriginalFileContent).
|
|
CreateFileAndAdd("file2", OriginalFileContent).
|
|
Commit("original").
|
|
NewBranch("first-change-branch").
|
|
UpdateFileAndAdd("file1", FirstChangeFileContent).
|
|
UpdateFileAndAdd("file2", FirstChangeFileContent).
|
|
Commit("first change").
|
|
Checkout("original-branch").
|
|
NewBranch("second-change-branch").
|
|
UpdateFileAndAdd("file1", SecondChangeFileContent).
|
|
UpdateFileAndAdd("file2", SecondChangeFileContent).
|
|
// this file is not changed in the second branch
|
|
CreateFileAndAdd("file3", "content").
|
|
Commit("second change").
|
|
EmptyCommit("second-change-branch unrelated change").
|
|
Checkout("first-change-branch")
|
|
|
|
shell.RunCommandExpectError([]string{"git", "merge", "--no-edit", "second-change-branch"})
|
|
}
|
|
|
|
// These 'multiple' variants are just like the short ones but with longer file contents and with multiple conflicts within the file.
|
|
|
|
var OriginalFileContentMultiple = `
|
|
This
|
|
Is
|
|
The
|
|
Original
|
|
File
|
|
..
|
|
It
|
|
Is
|
|
Longer
|
|
Than
|
|
The
|
|
Other
|
|
Options
|
|
`
|
|
|
|
var FirstChangeFileContentMultiple = `
|
|
This
|
|
Is
|
|
The
|
|
First Change
|
|
File
|
|
..
|
|
It
|
|
Is
|
|
Longer
|
|
Than
|
|
The
|
|
Other
|
|
Other First Change
|
|
`
|
|
|
|
var SecondChangeFileContentMultiple = `
|
|
This
|
|
Is
|
|
The
|
|
Second Change
|
|
File
|
|
..
|
|
It
|
|
Is
|
|
Longer
|
|
Than
|
|
The
|
|
Other
|
|
Other Second Change
|
|
`
|
|
|
|
var CreateMergeConflictFileMultiple = func(shell *Shell) {
|
|
shell.
|
|
NewBranch("original-branch").
|
|
EmptyCommit("one").
|
|
EmptyCommit("two").
|
|
EmptyCommit("three").
|
|
CreateFileAndAdd("file", OriginalFileContentMultiple).
|
|
Commit("original").
|
|
NewBranch("first-change-branch").
|
|
UpdateFileAndAdd("file", FirstChangeFileContentMultiple).
|
|
Commit("first change").
|
|
Checkout("original-branch").
|
|
NewBranch("second-change-branch").
|
|
UpdateFileAndAdd("file", SecondChangeFileContentMultiple).
|
|
Commit("second change").
|
|
EmptyCommit("second-change-branch unrelated change").
|
|
Checkout("first-change-branch")
|
|
|
|
shell.RunCommandExpectError([]string{"git", "merge", "--no-edit", "second-change-branch"})
|
|
}
|
|
|
|
var CreateMergeConflictFileForMergeFileTests = func(shell *Shell, originalFileContent string, currentChangeFileContent string, incomingChangeFileContent string) {
|
|
shell.
|
|
NewBranch("original-branch").
|
|
EmptyCommit("one").
|
|
CreateFileAndAdd("file", originalFileContent).
|
|
Commit("original").
|
|
NewBranch("current-change-branch").
|
|
UpdateFileAndAdd("file", currentChangeFileContent).
|
|
Commit("first change").
|
|
Checkout("original-branch").
|
|
NewBranch("incoming-change-branch").
|
|
UpdateFileAndAdd("file", incomingChangeFileContent).
|
|
Commit("second change").
|
|
Checkout("current-change-branch").
|
|
RunCommandExpectError([]string{"git", "merge", "--no-edit", "incoming-change-branch"})
|
|
}
|