From 1d5b7ab8d94434ee1ca2fa9c891727627bb82984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 25 Mar 2020 11:40:30 +0100 Subject: [PATCH] POC for hg merge support --- .../scm/repository/spi/HgDiffCommand.java | 8 ++++++-- .../spi/HgRepositoryServiceProvider.java | 18 ++++++++++-------- .../spi/javahg/HgDiffInternalCommand.java | 13 ++++++++++--- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java index 7f6ef1a3b9..bc62f933f3 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- @@ -74,7 +74,11 @@ public class HgDiffCommand extends AbstractCommand implements DiffCommand cmd.git(); } - cmd.change(HgUtil.getRevision(request.getRevision())); + if (request.getAncestorChangeset() != null) { + cmd.ancestor(request.getRevision(), request.getAncestorChangeset()); + } else { + cmd.change(HgUtil.getRevision(request.getRevision())); + } InputStream inputStream = null; diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java index 176f674516..3419a5e7d0 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java @@ -44,13 +44,11 @@ import java.util.Set; public class HgRepositoryServiceProvider extends RepositoryServiceProvider { - /** Field description */ - //J- public static final Set COMMANDS = EnumSet.of( Command.BLAME, - Command.BROWSE, + Command.BROWSE, Command.CAT, - Command.DIFF, + Command.DIFF, Command.LOG, Command.TAGS, Command.BRANCH, @@ -59,13 +57,12 @@ public class HgRepositoryServiceProvider extends RepositoryServiceProvider Command.OUTGOING, Command.PUSH, Command.PULL, - Command.MODIFY + Command.MODIFY, + Command.MERGE ); - //J+ - /** Field description */ public static final Set FEATURES = - EnumSet.of(Feature.COMBINED_DEFAULT_BRANCH); + EnumSet.of(Feature.COMBINED_DEFAULT_BRANCH, Feature.INCOMING_REVISION); //~--- constructors --------------------------------------------------------- @@ -272,6 +269,11 @@ public class HgRepositoryServiceProvider extends RepositoryServiceProvider return new HgTagsCommand(context, repository); } + @Override + public MergeCommand getMergeCommand() { + return new HgMergeCommand(context, handler.getWorkdirFactory()); + } + //~--- fields --------------------------------------------------------------- /** Field description */ diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgDiffInternalCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgDiffInternalCommand.java index 093334c286..556b525f5b 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgDiffInternalCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/javahg/HgDiffInternalCommand.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.repository.spi.javahg; //~--- non-JDK imports -------------------------------------------------------- @@ -45,8 +45,8 @@ public final class HgDiffInternalCommand extends AbstractCommand /** Field description */ private static final String NAME = "diff"; - //~--- constructors --------------------------------------------------------- + //~--- constructors --------------------------------------------------------- /** * Constructs ... * @@ -58,8 +58,8 @@ public final class HgDiffInternalCommand extends AbstractCommand super(repository, NAME); } - //~--- methods -------------------------------------------------------------- + //~--- methods -------------------------------------------------------------- /** * Method description * @@ -88,6 +88,13 @@ public final class HgDiffInternalCommand extends AbstractCommand return this; } + public HgDiffInternalCommand ancestor(String revision, String ancestorChangeset) { + cmdAppend("--rev", "ancestor(" + ancestorChangeset + ", " + revision + ")"); + cmdAppend("--rev", revision); + + return this; + } + /** * Method description *