Checkout: Add the ability to checkout all paths.

Change-Id: Ie1e59c566b63d0dfac231e44e7ebd7f3f08f3e9f
Signed-off-by: Ned Twigg <ned.twigg@diffplug.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
index 3651542..4b86b60 100644
--- a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
@@ -613,7 +613,30 @@
 	}
 
 	@Test
-	public void testCheckouSingleFile() throws Exception {
+	public void testCheckoutAllPaths() throws Exception {
+		try (Git git = new Git(db)) {
+			writeTrashFile("a", "Hello world a");
+			git.add().addFilepattern(".").call();
+			git.commit().setMessage("commit file a").call();
+			git.branchCreate().setName("branch_1").call();
+			git.checkout().setName("branch_1").call();
+			File b = writeTrashFile("b", "Hello world b");
+			git.add().addFilepattern("b").call();
+			git.commit().setMessage("commit file b").call();
+			File a = writeTrashFile("a", "New Hello world a");
+			git.add().addFilepattern(".").call();
+			git.commit().setMessage("modified a").call();
+			assertArrayEquals(new String[] { "" },
+					execute("git checkout HEAD~2 -- ."));
+			assertEquals("Hello world a", read(a));
+			assertArrayEquals(new String[] { "* branch_1", "  master", "" },
+					execute("git branch"));
+			assertEquals("Hello world b", read(b));
+		}
+	}
+
+	@Test
+	public void testCheckoutSingleFile() throws Exception {
 		try (Git git = new Git(db)) {
 			File a = writeTrashFile("a", "file a");
 			git.add().addFilepattern(".").call();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
index 94517db..629b47a 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
@@ -92,8 +92,13 @@
 			CheckoutCommand command = git.checkout();
 			if (paths.size() > 0) {
 				command.setStartPoint(name);
-				for (String path : paths)
-					command.addPath(path);
+				if (paths.size() == 1 && paths.get(0).equals(".")) { //$NON-NLS-1$
+					command.setAllPaths(true);
+				} else {
+					for (String path : paths) {
+						command.addPath(path);
+					}
+				}
 			} else {
 				command.setCreateBranch(createBranch);
 				command.setName(name);