diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/IdeaSVNConfigFile.kt b/plugins/svn4idea/src/org/jetbrains/idea/svn/IdeaSVNConfigFile.kt index e5ed1ead1111..c34e276e42a4 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/IdeaSVNConfigFile.kt +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/IdeaSVNConfigFile.kt @@ -5,8 +5,10 @@ import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.util.Couple import com.intellij.openapi.util.io.FileSystemUtil.lastModified import com.intellij.openapi.util.text.StringUtil -import com.intellij.openapi.util.text.StringUtil.notNullize import com.intellij.util.containers.ContainerUtil.union +import org.apache.oro.text.GlobCompiler +import org.apache.oro.text.regex.MalformedPatternException +import org.apache.oro.text.regex.Perl5Matcher import org.ini4j.Config import org.ini4j.Ini import org.ini4j.spi.IniBuilder @@ -16,7 +18,6 @@ import org.jetbrains.idea.svn.api.Url import org.jetbrains.idea.svn.commandLine.SvnBindException import org.jetbrains.idea.svn.config.DefaultProxyGroup import org.jetbrains.idea.svn.config.ProxyGroup -import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions import java.io.IOException import java.io.PrintWriter import java.io.Writer @@ -167,15 +168,13 @@ class IdeaSVNConfigFile(private val myPath: Path) { return matches(patterns, host) && !matches(exceptions, host) } - private fun matches(pattern: String?, host: String): Boolean { - val tokenizer = StringTokenizer(notNullize(pattern), ",") - while (tokenizer.hasMoreTokens()) { - val token = tokenizer.nextToken() - if (DefaultSVNOptions.matches(token, host)) { - return true - } - } - return false + private fun matches(patterns: String?, host: String) = patterns.orEmpty().split(',').any { matchesPattern(it.trim(), host) } + private fun matchesPattern(pattern: String, host: String) = try { + Perl5Matcher().matches(host, GlobCompiler().compile(pattern)) + } + catch (e: MalformedPatternException) { + LOG.debug("Could not compile pattern $pattern", e) + false } @JvmStatic diff --git a/plugins/svn4idea/svn4idea.iml b/plugins/svn4idea/svn4idea.iml index 98f3043f9f93..58669e3704c4 100644 --- a/plugins/svn4idea/svn4idea.iml +++ b/plugins/svn4idea/svn4idea.iml @@ -98,5 +98,6 @@ + \ No newline at end of file