Browse Source

ResolveMerger: improving content merge readability

Separate "GITLINK conflict" and "attributes can't be content merged"
cases.

Signed-off-by: Demetr Starshov <dstarshov@google.com>
Change-Id: I29424e13ea1738af750196e7bf4315256a6095b6
tags/v5.9.0.202009080501-r
Demetr Starshov 3 years ago
parent
commit
29e998a0e6
1 changed files with 14 additions and 12 deletions
  1. 14
    12
      org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java

+ 14
- 12
org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java View File



boolean gitlinkConflict = isGitLink(modeO) || isGitLink(modeT); boolean gitlinkConflict = isGitLink(modeO) || isGitLink(modeT);
// Don't attempt to resolve submodule link conflicts // Don't attempt to resolve submodule link conflicts
if (gitlinkConflict || !attributes.canBeContentMerged()) {
if (gitlinkConflict) {
add(tw.getRawPath(), base, DirCacheEntry.STAGE_1, EPOCH, 0); add(tw.getRawPath(), base, DirCacheEntry.STAGE_1, EPOCH, 0);
add(tw.getRawPath(), ours, DirCacheEntry.STAGE_2, EPOCH, 0); add(tw.getRawPath(), ours, DirCacheEntry.STAGE_2, EPOCH, 0);
add(tw.getRawPath(), theirs, DirCacheEntry.STAGE_3, EPOCH, 0); add(tw.getRawPath(), theirs, DirCacheEntry.STAGE_3, EPOCH, 0);


if (gitlinkConflict) {
MergeResult<SubmoduleConflict> result = createGitLinksMergeResult(
base, ours, theirs);
result.setContainsConflicts(true);
mergeResults.put(tw.getPathString(), result);
if (!ignoreConflicts) {
unmergedPaths.add(tw.getPathString());
}
} else {
// attribute merge issues are conflicts but not failures
MergeResult<SubmoduleConflict> result = createGitLinksMergeResult(
base, ours, theirs);
result.setContainsConflicts(true);
mergeResults.put(tw.getPathString(), result);
if (!ignoreConflicts) {
unmergedPaths.add(tw.getPathString()); unmergedPaths.add(tw.getPathString());
} }
return true; return true;
} else if (!attributes.canBeContentMerged()) {
add(tw.getRawPath(), base, DirCacheEntry.STAGE_1, EPOCH, 0);
add(tw.getRawPath(), ours, DirCacheEntry.STAGE_2, EPOCH, 0);
add(tw.getRawPath(), theirs, DirCacheEntry.STAGE_3, EPOCH, 0);
// attribute merge issues are conflicts but not failures
unmergedPaths.add(tw.getPathString());
return true;
} }


// Check worktree before modifying files // Check worktree before modifying files
return true; return true;
} }


private MergeResult<SubmoduleConflict> createGitLinksMergeResult(
private static MergeResult<SubmoduleConflict> createGitLinksMergeResult(
CanonicalTreeParser base, CanonicalTreeParser ours, CanonicalTreeParser base, CanonicalTreeParser ours,
CanonicalTreeParser theirs) { CanonicalTreeParser theirs) {
return new MergeResult<>(Arrays.asList( return new MergeResult<>(Arrays.asList(

Loading…
Cancel
Save