diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/QuickMerge.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/QuickMerge.java index faea29510d79..20077fc42e34 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/QuickMerge.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/QuickMerge.java @@ -60,6 +60,7 @@ import org.tmatesoft.svn.core.SVNLogEntry; import org.tmatesoft.svn.core.SVNLogEntryPath; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.internal.util.SVNPathUtil; +import org.tmatesoft.svn.core.internal.util.SVNURLUtil; import java.io.File; import java.io.IOException; @@ -115,7 +116,12 @@ public class QuickMerge { @Override public void run(ContinuationContext continuationContext) { - if (SVNPathUtil.isAncestor(mySourceUrl, myWcInfo.getRootUrl()) || SVNPathUtil.isAncestor(myWcInfo.getRootUrl(), mySourceUrl)) { + SVNURL url = parseUrl(continuationContext); + if (url == null) { + return; + } + + if (SVNURLUtil.isAncestor(url, myWcInfo.getUrl()) || SVNURLUtil.isAncestor(myWcInfo.getUrl(), url)) { finishWithError(continuationContext, "Cannot merge from self", true); return; } @@ -124,6 +130,20 @@ public class QuickMerge { continuationContext.cancelEverything(); } } + + @Nullable + private SVNURL parseUrl(ContinuationContext continuationContext) { + SVNURL url = null; + + try { + url = SvnUtil.createUrl(mySourceUrl); + } + catch (SVNException e) { + finishWithError(continuationContext, e.getMessage(), true); + } + + return url; + } } private class CheckRepositorySupportsMergeinfo extends TaskDescriptor { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java index d19ed02f07c1..7fb35d14ca4d 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java @@ -30,6 +30,9 @@ import org.tmatesoft.svn.core.wc.SVNRevision; import java.util.Map; import java.util.Set; +// TODO: This one seem to determine revision in which branch was created - copied from trunk. +// TODO: This could be done in one command "svn log -r 0:HEAD --stop-on-copy --limit 1". +// TODO: Check for 1.7 and rewrite using this approach. public class FirstInBranch implements Runnable { private final SvnVcs myVcs; private final String myBranchUrl;