From 6b9aabd3ff11909ccfa195d72de7a11d5cf53d84 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Mon, 11 Nov 2019 16:15:59 +0100 Subject: [PATCH] Fix merge direction --- .../scm/repository/spi/GitMergeCommand.java | 20 ++++++++--------- .../spi/GitMergeCommand_Conflict_Test.java | 22 +++++++++---------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeCommand.java index 6a4335346a..505594ba8b 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeCommand.java @@ -49,7 +49,7 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand @Override public MergeConflictResult computeConflicts(MergeCommandRequest request) { - return inClone(git -> new ConflictWorker(git, request), workdirFactory, request.getTargetBranch()); + return inClone(git -> new ConflictWorker(git, request), workdirFactory, request.getBranchToMerge()); } private MergeCommandResult mergeWithStrategy(MergeCommandRequest request) { @@ -93,8 +93,8 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand } private class ConflictWorker extends GitCloneWorker { - private final String branchToMerge; - private final String targetBranch; + private final String theirs; + private final String ours; private final CanonicalTreeParser treeParser; private final ObjectId treeId; private final ByteArrayOutputStream diffBuffer; @@ -104,15 +104,15 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand private ConflictWorker(Git git, MergeCommandRequest request) { super(git, context, repository); - branchToMerge = request.getBranchToMerge(); - targetBranch = request.getTargetBranch(); + theirs = request.getTargetBranch(); + ours = request.getBranchToMerge(); treeParser = new CanonicalTreeParser(); diffBuffer = new ByteArrayOutputStream(); try { - treeId = git.getRepository().resolve(request.getTargetBranch() + "^{tree}"); + treeId = git.getRepository().resolve(ours + "^{tree}"); } catch (IOException e) { - throw notFound(entity("branch", request.getTargetBranch()).in(repository)); + throw notFound(entity("branch", ours).in(repository)); } } @@ -154,15 +154,15 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand } private MergeResult doTemporaryMerge() throws IOException { - ObjectId sourceRevision = resolveRevision(branchToMerge); + ObjectId sourceRevision = resolveRevision(theirs); try { return getClone().merge() .setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.NO_FF) .setCommit(false) - .include(branchToMerge, sourceRevision) + .include(theirs, sourceRevision) .call(); } catch (GitAPIException e) { - throw new InternalRepositoryException(context.getRepository(), "could not merge branch " + branchToMerge + " into " + targetBranch, e); + throw new InternalRepositoryException(context.getRepository(), "could not merge branch " + theirs + " into " + ours, e); } } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java index 18a3fa0538..faaa553202 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitMergeCommand_Conflict_Test.java @@ -17,20 +17,18 @@ public class GitMergeCommand_Conflict_Test extends AbstractGitCommandTestBase { static final String DIFF_HEADER = "diff --git a/Main.java b/Main.java"; static final String DIFF_FILE_CONFLICT = "--- a/Main.java\n" + "+++ b/Main.java\n" + - "@@ -1,6 +1,13 @@\n" + - "+import java.util.Arrays;\n" + - "+\n" + + "@@ -3,7 +3,11 @@\n" + " class Main {\n" + " public static void main(String[] args) {\n" + " System.out.println(\"Expect nothing more to happen.\");\n" + "+<<<<<<< HEAD\n" + - " System.out.println(\"This is for demonstration, only.\");\n" + + " System.out.println(\"Parameters:\");\n" + + " Arrays.stream(args).map(arg -> \"- \" + arg).forEach(System.out::println);\n" + "+=======\n" + - "+ System.out.println(\"Parameters:\");\n" + - "+ Arrays.stream(args).map(arg -> \"- \" + arg).forEach(System.out::println);\n" + - "+>>>>>>> feature/print_args\n" + + "+ System.out.println(\"This is for demonstration, only.\");\n" + + "+>>>>>>> integration\n" + " }\n" + - " }\n"; + " }"; @Rule public BindTransportProtocolRule transportProtocolRule = new BindTransportProtocolRule(); @@ -51,18 +49,18 @@ public class GitMergeCommand_Conflict_Test extends AbstractGitCommandTestBase { } @Test - public void diffBetweenTwoBranchesWithDeletedByThem() throws IOException { + public void diffBetweenTwoBranchesWithDeletedByUs() throws IOException { MergeConflictResult result = computeMergeConflictResult("feature/remove_class", "integration"); SingleMergeConflict conflict = result.getConflicts().get(0); - assertThat(conflict.getType()).isEqualTo(DELETED_BY_THEM); + assertThat(conflict.getType()).isEqualTo(DELETED_BY_US); assertThat(conflict.getPath()).isEqualTo("Main.java"); } @Test - public void diffBetweenTwoBranchesWithDeletedByUs() throws IOException { + public void diffBetweenTwoBranchesWithDeletedByThem() throws IOException { MergeConflictResult result = computeMergeConflictResult("integration", "feature/remove_class"); SingleMergeConflict conflict = result.getConflicts().get(0); - assertThat(conflict.getType()).isEqualTo(DELETED_BY_US); + assertThat(conflict.getType()).isEqualTo(DELETED_BY_THEM); assertThat(conflict.getPath()).isEqualTo("Main.java"); }