Merge branch 'stable-0.9'

* stable-0.9:
  Qualify post-0.9.3 builds
  JGit 0.9.3
  clone: Correct formatting of init message
  Fix cloning of repositories with big objects
  Qualify post-0.9.1 builds
  JGit 0.9.1
  Fix PlotCommitList to set lanes on child-less commits
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java
index bf3924b..768890c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/RevWalkTextBuiltin.java
@@ -50,8 +50,10 @@
 
 import org.kohsuke.args4j.Argument;
 import org.kohsuke.args4j.Option;
+import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.pgm.opt.PathTreeFilterHandler;
 import org.eclipse.jgit.revwalk.FollowFilter;
 import org.eclipse.jgit.revwalk.ObjectWalk;
@@ -80,6 +82,9 @@ abstract class RevWalkTextBuiltin extends TextBuiltin {
 	@Option(name = "--total-count")
 	boolean count = false;
 
+	@Option(name = "--all")
+	boolean all = false;
+
 	char[] outbuffer = new char[Constants.OBJECT_ID_LENGTH * 2];
 
 	private final EnumSet<RevSort> sorting = EnumSet.noneOf(RevSort.class);
@@ -156,6 +161,18 @@ else if (pathFilter != TreeFilter.ALL)
 		else if (revLimiter.size() > 1)
 			walk.setRevFilter(AndRevFilter.create(revLimiter));
 
+		if (all)
+			for (Ref a : db.getAllRefs().values()) {
+				ObjectId oid = a.getPeeledObjectId();
+				if (oid == null)
+					oid = a.getObjectId();
+				try {
+					commits.add(walk.parseCommit(oid));
+				} catch (IncorrectObjectTypeException e) {
+					// Ignore all refs which are not commits
+				}
+			}
+
 		if (commits.isEmpty()) {
 			final ObjectId head = db.resolve(Constants.HEAD);
 			if (head == null)
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
index ff8c9a6..6aef874 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
@@ -83,6 +83,16 @@ public void testWindowsFile2() throws Exception {
 		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);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
index 3f53328..44160c0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java
+++ b/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("^(?:([^@]+?)@)?([^:]+?):(.+)$");