From 8d1e1865eec4bfb607428f0cc1bc060a8fe0258f Mon Sep 17 00:00:00 2001 From: irengrig Date: Wed, 24 Aug 2011 19:10:03 +0400 Subject: [PATCH] SVN: wrong mapping was found --- .../src/org/jetbrains/idea/svn/SvnMapping.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnMapping.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnMapping.java index 606819b0bcc9..4465b1c79204 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnMapping.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/SvnMapping.java @@ -15,7 +15,9 @@ */ package org.jetbrains.idea.svn; +import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; @@ -90,7 +92,12 @@ public class SvnMapping { @Nullable public String getRootForPath(final String path) { - return myFile2UrlMap.floorKey(path); + String floor = myFile2UrlMap.floorKey(path); + NavigableMap head = myFile2UrlMap.headMap(floor, true); + for (String root : head.descendingKeySet()) { + if (startsWithForPaths(root, path)) return root; + } + return null; } public Collection getUrls() { @@ -133,4 +140,8 @@ public class SvnMapping { return FileUtil.comparePaths(o1, o2); } } + + private boolean startsWithForPaths(final String parent, final String child) { + return SystemInfo.isFileSystemCaseSensitive ? child.startsWith(parent) : (StringUtil.startsWithIgnoreCase(child, parent)); + } }