summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2014-12-04 01:47:21 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2014-12-22 15:45:46 +0100
commit15e8b4fb2e0367f1f66569da4e32ac730feb9119 (patch)
treee08491b9bfd2dc9d3987ebd5a46a2b7371ddabad
parent563c1ad514ada9af13f2a1955a10000137804527 (diff)
downloadjgit-15e8b4fb2e0367f1f66569da4e32ac730feb9119.tar.gz
jgit-15e8b4fb2e0367f1f66569da4e32ac730feb9119.zip
[pgm] Add option --bare to clone command
Change-Id: I528491e3e20d3c9ebe37fe3cd2bf85b4644d8698 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CloneTest.java20
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java5
2 files changed, 24 insertions, 1 deletions
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 c65e162384..fe80388c0c 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 @@ package org.eclipse.jgit.pgm;
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 class CloneTest extends CLIRepositoryTestCase {
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 88ea1202d7..cd6953cb05 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 @@ class Clone extends AbstractFetchCommand {
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));