Browse Source

Fix replacement quoting for replaceAll in filter command

According to String.replaceAll JavaDoc:

"Note that backslashes (\) and dollar signs ($) in the replacement
string may cause the results to be different than if it were being
treated as a literal replacement string; see Matcher.replaceAll. Use
java.util.regex.Matcher.quoteReplacement to suppress the special meaning
of these characters, if desired."

Bug: 536318
Change-Id: Ib70cfec41bf73e14d23d94d14aee05a25b1e87f6
Signed-off-by: Markus Duft <markus.duft@ssi-schaefer.com>
tags/v5.1.0.201809111528-r
Markus Duft 5 years ago
parent
commit
303adeb8bf
1 changed files with 3 additions and 1 deletions
  1. 3
    1
      org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java

+ 3
- 1
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/TreeWalk.java View File

@@ -50,6 +50,7 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;

import org.eclipse.jgit.annotations.Nullable;
import org.eclipse.jgit.api.errors.JGitInternalException;
@@ -1438,7 +1439,8 @@ public class TreeWalk implements AutoCloseable, AttributesProvider {
return null;
}
return filterCommand.replaceAll("%f", //$NON-NLS-1$
QuotedString.BOURNE.quote((getPathString())));
Matcher.quoteReplacement(
QuotedString.BOURNE.quote((getPathString()))));
}

/**

Loading…
Cancel
Save