Add merge menu with conflict resolver #4889
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements #2026. I also tried to address issues mentioned in the #3477 PR.
Previously, pressing
M
opened an external merge tool. Now it opens a merge options menu that allows selecting all conflicts in chosen files as ours (HEAD), theirs (incoming), or union (both), while still providing access to the external merge tool.This uses git-merge-file for a 3-way merge with the
--ours
,--theirs
, and--union
flags. This approach avoids the issue mentioned in #1608 (reply in thread), and correctly applies the chosen conflict resolutions while preserving changes from other branches. The command is executed with--object-id
, which requires object IDs obtained viarev-parse
, instead of relying on the standard version that works with full saved files.Disclaimer: On my machine, the tests pass inconsistently. Sometimes they succeed, sometimes fail with errors such as
POTENTIAL DEADLOCK: Recursive locking
orInconsistent locking
. I haven’t yet identified the root cause of this issue.PR Description
Please check if the PR fulfills these requirements
go generate ./...
)