Browse Source

Handle the tilde notation (~user) of git url

When the path is prefixed with ~ the URI parser thought about this
as /~. Strip the / if the next character is the tilde.

Bug: 307017
Change-Id: I58203e5617956b46d83e8987d1f8042beddffac3
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
stable-0.9
Robin Rosenberg 15 years ago
parent
commit
845714158a
  1. 47
      org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
  2. 3
      org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java

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

@ -250,6 +250,53 @@ public class URIishTest extends TestCase {
assertEquals(u, new URIish(str));
}
public void testGitWithUserHome() throws Exception {
final String str = "git://example.com/~some/p ath";
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
assertEquals("~some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
/* Resolving ~user is beyond standard Java API and need more support
public void testFileWithUserHome() throws Exception {
final String str = "~some/p ath";
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
assertEquals("~some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
*/
public void testFileWithNoneUserHomeWithTilde() throws Exception {
final String str = "/~some/p ath";
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
assertEquals("/~some/p ath", u.getPath());
assertNull(u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
public void testGetNullHumanishName() {
try {
new URIish().getHumanishName();

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

@ -104,6 +104,9 @@ public class URIish implements Serializable {
&& (path.charAt(1) >= 'A' && path.charAt(1) <= 'Z'
|| path.charAt(1) >= 'a' && path.charAt(1) <= 'z'))
path = path.substring(1);
else if (scheme != null && path.length() >= 2
&& path.charAt(0) == '/' && path.charAt(1) == '~')
path = path.substring(1);
} else {
matcher = SCP_URI.matcher(s);
if (matcher.matches()) {

Loading…
Cancel
Save