Mercurial > hg > mercurial
changeset 632:83692f82fbb7
Return a MergeResult
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Wed, 14 Aug 2013 11:07:19 +0400 |
parents | d28d52336ce5 |
children | e89816840a2e |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java |
diffstat | 1 files changed, 14 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java Wed Aug 07 13:08:31 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialMergeSupport.java Wed Aug 14 11:07:19 2013 +0400 @@ -2,10 +2,7 @@ import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.MergeConflictException; -import jetbrains.buildServer.vcs.MergeOptions; -import jetbrains.buildServer.vcs.MergeSupport; -import jetbrains.buildServer.vcs.VcsException; -import jetbrains.buildServer.vcs.VcsRoot; +import jetbrains.buildServer.vcs.*; import org.jetbrains.annotations.NotNull; import com.intellij.openapi.diagnostic.Logger; @@ -28,12 +25,14 @@ myHgVcsRootFactory = vcsRootFactory; } - public void merge(@NotNull VcsRoot root, - @NotNull String srcRevision, - @NotNull String dstBranch, - @NotNull String message, - @NotNull MergeOptions options) throws VcsException { + @NotNull + public MergeResult merge(@NotNull VcsRoot root, + @NotNull String srcRevision, + @NotNull String dstBranch, + @NotNull String message, + @NotNull MergeOptions options) throws VcsException { File tmpDir = null; + MergeResult mergeResult = new MergeResult(); try { tmpDir = HgFileUtil.createTempDir(); HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); @@ -46,12 +45,17 @@ repo.merge().revision(srcRevision).call(); } catch (MergeConflictException e) { List<String> conflicts = repo.resolve().call(); - throw new VcsException(getConflicsErrorMessage(conflicts)); + mergeResult.setSuccess(false); + for (String conflict : conflicts) { + mergeResult.addConflict(conflict); + } + return mergeResult; } repo.commit().message(message).call(); repo.push().toRepository(hgRoot.getRepository()).call(); + return mergeResult; } catch (Exception e) { if (e instanceof VcsException) throw (VcsException) e; @@ -60,24 +64,4 @@ deleteDir(tmpDir, LOG); } } - - @NotNull - private String getConflicsErrorMessage(@NotNull List<String> conflicts) { - if (conflicts.isEmpty()) - return "Merge failed, but no conflicts found"; - - if (conflicts.size() == 1) - return "Failed to merge file " + conflicts.get(0); - - StringBuilder message = new StringBuilder(); - message.append("Failed to merge files: "); - int i = 0; - for (; i < conflicts.size() && i < 3; i++) { - message.append(conflicts.get(i)).append("\n"); - } - if (i < conflicts.size()) - message.append(" and ").append(conflicts.size() - i).append(" more"); - - return message.toString(); - } }