# HG changeset patch # User Dmitry Neverov # Date 1381919621 -14400 # Node ID 3cc513b9e3c137c01786803bc0e96bd956116ace # Parent 718e4dbff3c3f42e54a0f1629637b3c41a7d29ad Use non-interactive merge diff -r 718e4dbff3c3 -r 3cc513b9e3c1 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MergeCommand.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MergeCommand.java Tue Oct 15 22:46:42 2013 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MergeCommand.java Wed Oct 16 14:33:41 2013 +0400 @@ -8,6 +8,7 @@ public class MergeCommand extends BaseCommand { + private String myMergeTool; private String myRevision; public MergeCommand(@NotNull CommandSettings commandSettings, @@ -21,11 +22,18 @@ return this; } + public MergeCommand withMergeTool(@NotNull String mergeTool) { + myMergeTool = mergeTool; + return this; + } + public void call() throws VcsException { MercurialCommandLine cmd = createCommandLine(); cmd.addParameter("merge"); if (myRevision != null) cmd.addParameters("-r", myRevision); + if (myMergeTool != null) + cmd.addParameters("--tool", myMergeTool); CommandResult result = runCommand(cmd); if (result.getExitCode() == 1) throw new MergeConflictException(); diff -r 718e4dbff3c3 -r 3cc513b9e3c1 mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java --- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java Tue Oct 15 22:46:42 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java Wed Oct 16 14:33:41 2013 +0400 @@ -48,7 +48,7 @@ try { new CheckoutRepository(myMirrorManager, myHgRepoFactory, myConfig.getPullTimeout(), myConfig.useTagsAsBranches(), hgRoot, tmpDir) .setRevision(task.getDestinationRevision()).checkout(); - repo.merge().revision(task.getSourceRevision()).call(); + repo.merge().withMergeTool(myConfig.getMergeTool()).revision(task.getSourceRevision()).call(); results.put(task, MergeResult.createMergeSuccessResult()); } catch (MergeConflictException e) { results.put(task, MergeResult.createMergeError(detectConflicts(hgRoot, "", repo))); @@ -87,7 +87,7 @@ HgRepo repo = myHgRepoFactory.createRepo(hgRoot, tmpDir); try { - repo.merge().revision(srcRevision).call(); + repo.merge().withMergeTool(myConfig.getMergeTool()).revision(srcRevision).call(); } catch (MergeConflictException e) { return MergeResult.createMergeError(detectConflicts(hgRoot, "", repo)); } catch (MergeWithWorkingDirAncestor e) { diff -r 718e4dbff3c3 -r 3cc513b9e3c1 mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java --- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Tue Oct 15 22:46:42 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Wed Oct 16 14:33:41 2013 +0400 @@ -37,4 +37,6 @@ public boolean allowSourceCaching(); public int listFilesTTLSeconds(); + + public String getMergeTool(); } diff -r 718e4dbff3c3 -r 3cc513b9e3c1 mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java --- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Tue Oct 15 22:46:42 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Wed Oct 16 14:33:41 2013 +0400 @@ -100,4 +100,8 @@ public int listFilesTTLSeconds() { return TeamCityProperties.getInteger("teamcity.hg.listFilesTTLSeconds", 60); } + + public String getMergeTool() { + return TeamCityProperties.getProperty("teamcity.hg.mergeTool", "internal:merge"); + } } diff -r 718e4dbff3c3 -r 3cc513b9e3c1 mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java --- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Tue Oct 15 22:46:42 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Wed Oct 16 14:33:41 2013 +0400 @@ -86,6 +86,10 @@ public int listFilesTTLSeconds() { return 0; } + + public String getMergeTool() { + return "internal:merge"; + } }; }