Browse Source

Allow ../relative paths in remotes

git allows remotes to be relative paths, but the regex
validating urls wouldn't accept anything starting with "..".
Other functionality works fine with these paths.

Bug: 311300
Change-Id: Ib74de0450a1c602b22884e19d994ce2f52634c77
stable-0.10
Chris West (Faux) 15 years ago
parent
commit
2a52359454
  1. 10
      org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
  2. 7
      org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java

10
org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java

@ -83,6 +83,16 @@ public class URIishTest extends TestCase {
assertEquals(u, new URIish(str));
}
public void testRelativePath() throws Exception {
final String str = "../../foo/bar";
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
assertEquals(str, u.getPath());
assertEquals(str, u.toString());
assertEquals(u, new URIish(str));
}
public void testUNC() throws Exception {
final String str = "\\\\some\\place";
URIish u = new URIish(str);

7
org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java

@ -64,7 +64,12 @@ public class URIish implements Serializable {
private static final long serialVersionUID = 1L;
private static final Pattern FULL_URI = Pattern
.compile("^(?:([a-z][a-z0-9+-]+)://(?:([^/]+?)(?::([^/]+?))?@)?(?:([^/]+?))?(?::(\\d+))?)?((?:[A-Za-z]:)?/.+)$");
.compile("^(?:([a-z][a-z0-9+-]+)://" // optional http://
+ "(?:([^/]+?)(?::([^/]+?))?@)?" // optional user:password@
+ "(?:([^/]+?))?(?::(\\d+))?)?" // optional example.com:1337
+ "((?:[A-Za-z]:)?" // optional drive-letter:
+ "(?:\\.\\.)?" // optionally a relative path
+"/.+)$"); // /anything
private static final Pattern SCP_URI = Pattern
.compile("^(?:([^@]+?)@)?([^:]+?):(.+)$");

Loading…
Cancel
Save