From 0fc846c0311b8e4d003707882d631eefaed0ccc8 Mon Sep 17 00:00:00 2001 From: irengrig Date: Wed, 19 Dec 2012 15:40:14 +0400 Subject: [PATCH] IDEA-49025 Subversion: CreateBranch or Tag dialog: impossible to select BaseURL for branch/tag if the mapped vcs root is above working copy --- .../svn/dialogs/BranchConfigurationDialog.java | 8 ++++++-- .../jetbrains/idea/svn/dialogs/CopyDialog.java | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/BranchConfigurationDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/BranchConfigurationDialog.java index f8dfdc09a4d5..aa6506917005 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/BranchConfigurationDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/BranchConfigurationDialog.java @@ -21,7 +21,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TextFieldWithBrowseButton; -import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.AnActionButton; @@ -167,7 +166,7 @@ public class BranchConfigurationDialog extends DialogWrapper { } public static void configureBranches(final Project project, final VirtualFile file, final boolean isRoot) { - final VirtualFile vcsRoot = (isRoot) ? file : ProjectLevelVcsManager.getInstance(project).getVcsRootFor(file); + final VirtualFile vcsRoot = (isRoot) ? file : getRoot(project, file); if (vcsRoot == null) { return; } @@ -205,6 +204,11 @@ public class BranchConfigurationDialog extends DialogWrapper { } } + private static VirtualFile getRoot(Project project, VirtualFile file) { + RootUrlInfo path = SvnVcs.getInstance(project).getSvnFileUrlMapping().getWcRootForFilePath(new File(file.getPath())); + return path == null ? null : path.getVirtualFile(); + } + private static class MyListModel extends AbstractListModel { private final SvnBranchConfigurationNew myConfiguration; private List myBranchUrls; diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java index c6bd32b52661..e2e9110cef0c 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/CopyDialog.java @@ -23,14 +23,13 @@ import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; -import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.VcsException; -import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ComboboxWithBrowseButton; import com.intellij.ui.DocumentAdapter; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NonNls; +import org.jetbrains.idea.svn.RootUrlInfo; import org.jetbrains.idea.svn.SvnBranchConfigurationManager; import org.jetbrains.idea.svn.SvnBundle; import org.jetbrains.idea.svn.SvnVcs; @@ -86,7 +85,7 @@ public class CopyDialog extends DialogWrapper { private SvnBranchConfigurationNew myBranchConfiguration; private final VirtualFile mySrcVirtualFile; - public CopyDialog(final Project project, boolean canBeParent, File file) { + public CopyDialog(final Project project, boolean canBeParent, File file) throws VcsException { super(project, canBeParent); mySrcFile = file; myProject = project; @@ -130,8 +129,15 @@ public class CopyDialog extends DialogWrapper { } }); - VirtualFile srcVirtualFile = LocalFileSystem.getInstance().findFileByIoFile(file); - srcVirtualFile = ProjectLevelVcsManager.getInstance(project).getVcsRootFor(srcVirtualFile); + VirtualFile srcVirtualFile; + RootUrlInfo root = SvnVcs.getInstance(myProject).getSvnFileUrlMapping().getWcRootForFilePath(file); + if (root == null) { + throw new VcsException("Can not find working copy for file: " + file.getPath()); + } + srcVirtualFile = root.getVirtualFile(); + if (srcVirtualFile == null) { + throw new VcsException("Can not find working copy for file: " + file.getPath()); + } this.mySrcVirtualFile = srcVirtualFile; myRevisionPanel.setRoot(mySrcVirtualFile); @@ -173,7 +179,7 @@ public class CopyDialog extends DialogWrapper { }); myBranchTagBaseComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - BranchConfigurationDialog.configureBranches(project, mySrcVirtualFile); + BranchConfigurationDialog.configureBranches(project, mySrcVirtualFile, true); updateBranchTagBases(); updateControls(); }