From 83cc1c4a6ff2a71eb207509649da6efed5d57532 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Wed, 18 Dec 2019 13:17:30 +0100 Subject: [PATCH] return revision on merge --- .../repository/api/MergeCommandResult.java | 22 +++++++------------ .../spi/GitFastForwardIfPossible.java | 2 +- .../scm/repository/spi/GitMergeStrategy.java | 2 +- .../repository/spi/GitMergeWithSquash.java | 4 ++-- .../sonia/scm/repository/spi/GitMerger.java | 3 ++- 5 files changed, 14 insertions(+), 19 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandResult.java b/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandResult.java index 54b57c668f..5680416925 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandResult.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/MergeCommandResult.java @@ -1,9 +1,7 @@ package sonia.scm.repository.api; import java.util.Collection; -import java.util.HashSet; -import static java.util.Collections.emptyList; import static java.util.Collections.unmodifiableCollection; /** @@ -13,19 +11,15 @@ import static java.util.Collections.unmodifiableCollection; */ public class MergeCommandResult { private final Collection filesWithConflict; - private static String mergeCommitRevision; + private String newHeadRevision; - public MergeCommandResult(Collection filesWithConflict, String mergeCommitRevision) { + public MergeCommandResult(Collection filesWithConflict) { this.filesWithConflict = filesWithConflict; - this.mergeCommitRevision = mergeCommitRevision; } - public static MergeCommandResult success() { - return new MergeCommandResult(emptyList(), mergeCommitRevision); - } - - public static MergeCommandResult failure(Collection filesWithConflict) { - return new MergeCommandResult(new HashSet<>(filesWithConflict), ""); + public MergeCommandResult(Collection filesWithConflict, String newHeadRevision) { + this.filesWithConflict = filesWithConflict; + this.newHeadRevision = newHeadRevision; } /** @@ -33,7 +27,7 @@ public class MergeCommandResult { * merge conflicts. In this case you can use {@link #getFilesWithConflict()} to check what files could not be merged. */ public boolean isSuccess() { - return filesWithConflict.isEmpty(); + return filesWithConflict.isEmpty() && newHeadRevision != null; } /** @@ -44,7 +38,7 @@ public class MergeCommandResult { return unmodifiableCollection(filesWithConflict); } - public String getMergeCommitRevision() { - return mergeCommitRevision; + public String getNewHeadRevision() { + return newHeadRevision; } } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitFastForwardIfPossible.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitFastForwardIfPossible.java index ddca0a78b0..cf03e832a3 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitFastForwardIfPossible.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitFastForwardIfPossible.java @@ -23,7 +23,7 @@ class GitFastForwardIfPossible extends GitMergeStrategy { MergeResult fastForwardResult = mergeWithFastForwardOnlyMode(); if (fastForwardResult.getMergeStatus().isSuccessful()) { push(); - return new MergeCommandResult(Collections.emptyList(), ""); + return new MergeCommandResult(Collections.emptyList(), fastForwardResult.getNewHead().toString()); } else { return fallbackMerge.run(); } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeStrategy.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeStrategy.java index 17b4571820..16048c1ef6 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeStrategy.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitMergeStrategy.java @@ -69,6 +69,6 @@ abstract class GitMergeStrategy extends AbstractGitCommand.GitCloneWorker