changeset 643:2f6c4b61686a

Don't throw errors for merge into same branch
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Mon, 16 Sep 2013 21:51:32 +0400
parents 4d76b4b8b814
children 96af0d63f80a
files mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandResult.java mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/exception/MergeWithWorkingDirAncestor.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MergeSupportTest.java mercurial-tests/testData/merge/README
diffstat 5 files changed, 40 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandResult.java	Mon Aug 26 16:22:35 2013 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommandResult.java	Mon Sep 16 21:51:32 2013 +0400
@@ -182,6 +182,7 @@
     checkFileNotUnderTheRoot(stderr);
     checkConnectionRefused(stderr);
     checkAbandonedTransaction(stderr);
+    checkMergeWithWorkDirAncestor(stderr);
   }
 
   private void checkUnrelatedRepository(@NotNull final String stderr) throws UnrelatedRepositoryException {
@@ -223,6 +224,11 @@
       throw new AbandonedTransactionFound();
   }
 
+  private void checkMergeWithWorkDirAncestor(@NotNull final String stderr) throws MergeWithWorkingDirAncestor {
+    if (stderr.equals("abort: merging with a working directory ancestor has no effect"))
+      throw new MergeWithWorkingDirAncestor();
+  }
+
   private static Set<Integer> setOf(Integer... ints) {
     return new HashSet<Integer>(asList(ints));
   }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/exception/MergeWithWorkingDirAncestor.java	Mon Sep 16 21:51:32 2013 +0400
@@ -0,0 +1,11 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception;
+
+import jetbrains.buildServer.vcs.VcsException;
+
+public class MergeWithWorkingDirAncestor extends VcsException {
+
+  public MergeWithWorkingDirAncestor() {
+    super("Merging with a working directory ancestor");
+  }
+
+}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java	Mon Aug 26 16:22:35 2013 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java	Mon Sep 16 21:51:32 2013 +0400
@@ -2,6 +2,7 @@
 
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.MergeConflictException;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.MergeWithWorkingDirAncestor;
 import jetbrains.buildServer.vcs.*;
 import org.jetbrains.annotations.NotNull;
 import com.intellij.openapi.diagnostic.Logger;
@@ -52,6 +53,8 @@
           List<String> conflicts = repo.resolve().call();
           result.setSuccess(false);
           result.setConflicts(conflicts);
+        } catch (MergeWithWorkingDirAncestor e) {
+          //ignore
         } catch (VcsException e) {
           result.setSuccess(false);
         }
@@ -92,6 +95,8 @@
           mergeResult.addConflict(conflict);
         }
         return mergeResult;
+      } catch (MergeWithWorkingDirAncestor e) {
+        return mergeResult;
       }
 
       repo.commit().message(message).call();
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MergeSupportTest.java	Mon Aug 26 16:22:35 2013 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MergeSupportTest.java	Mon Sep 16 21:51:32 2013 +0400
@@ -105,4 +105,11 @@
     assertThat(results.get(topic2ToDefault).getConflicts(), hasItem("b/c"));
     assertTrue(results.get(topic1ToTopic2).isSuccess());
   }
+
+
+  public void merge_into_same_branch(@NotNull HgVersion _) throws Exception {
+    VcsRoot root = vcsRoot().withUrl(myRemoteRepo).build();
+    MergeResult result = myMergeSupport.merge(root, "6370ce18689a", "default", "merge into same branch", new MergeOptions());
+    assertTrue(result.isSuccess());
+  }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-tests/testData/merge/README	Mon Sep 16 21:51:32 2013 +0400
@@ -0,0 +1,11 @@
+no.subrepos
+
+o    changeset:   4:79d836707416 topic2
+|
+| o  changeset:   3:2742914d19b2 topic1
+|/
+| o  changeset:   2:09dd527b77ec
+|/
+o    changeset:   1:6370ce18689a
+|
+o    changeset:   0:7e3988f0f412