[pgm] Add option --bare to clone command

Change-Id: I528491e3e20d3c9ebe37fe3cd2bf85b4644d8698
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CloneTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CloneTest.java
index c65e162..fe80388 100644
--- a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CloneTest.java
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CloneTest.java
@@ -44,6 +44,7 @@
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.util.List;
@@ -133,4 +134,23 @@ public void testCloneIntoCurrentDir() throws Exception {
 		List<Ref> branches = git2.branchList().call();
 		assertEquals("expected 1 branch", 1, branches.size());
 	}
+
+	public void testCloneBare() throws Exception {
+		createInitialCommit();
+
+		File gitDir = db.getDirectory();
+		String sourcePath = gitDir.getAbsolutePath();
+		String targetPath = (new File(sourcePath)).getParentFile()
+				.getParentFile().getAbsolutePath()
+				+ "/target.git";
+		StringBuilder cmd = new StringBuilder("git clone --bare ")
+				.append(sourcePath + " " + targetPath);
+		String[] result = execute(cmd.toString());
+		assertArrayEquals(new String[] {
+				"Cloning into '" + targetPath + "'...", "", "" }, result);
+		Git git2 = Git.open(new File(targetPath));
+		List<Ref> branches = git2.branchList().call();
+		assertEquals("expected 1 branch", 1, branches.size());
+		assertTrue("expected bare repository", git2.getRepository().isBare());
+	}
 }
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
index 88ea120..cd6953c 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
@@ -67,6 +67,9 @@ class Clone extends AbstractFetchCommand {
 	@Option(name = "--no-checkout", aliases = { "-n" }, usage = "usage_noCheckoutAfterClone")
 	private boolean noCheckout;
 
+	@Option(name = "--bare", usage = "usage_bareClone")
+	private boolean isBare;
+
 	@Argument(index = 0, required = true, metaVar = "metaVar_uriish")
 	private String sourceUri;
 
@@ -101,7 +104,7 @@ protected void run() throws Exception {
 			branch = Constants.HEAD;
 
 		CloneCommand command = Git.cloneRepository();
-		command.setURI(sourceUri).setRemote(remoteName)
+		command.setURI(sourceUri).setRemote(remoteName).setBare(isBare)
 				.setNoCheckout(noCheckout).setBranch(branch);
 
 		command.setGitDir(gitdir == null ? null : new File(gitdir));