From 15e8b4fb2e0367f1f66569da4e32ac730feb9119 Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Thu, 4 Dec 2014 01:47:21 +0100 Subject: [PATCH] [pgm] Add option --bare to clone command Change-Id: I528491e3e20d3c9ebe37fe3cd2bf85b4644d8698 Signed-off-by: Matthias Sohn --- .../tst/org/eclipse/jgit/pgm/CloneTest.java | 20 +++++++++++++++++++ .../src/org/eclipse/jgit/pgm/Clone.java | 5 ++++- 2 files changed, 24 insertions(+), 1 deletion(-) 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 c65e16238..fe80388c0 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 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 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 88ea1202d..cd6953cb0 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));