summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit
diff options
context:
space:
mode:
authorRobin Stocker <robin@nibor.org>2013-05-25 15:56:50 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2013-05-26 01:25:10 +0200
commit7bb2a1b8440386dead8b72c329b92e2473e89e32 (patch)
tree324c1e637e5237c4a9533b986c19102c3e60cb98 /org.eclipse.jgit.test/tst/org/eclipse/jgit
parent67783d7ded4ee05a88fde135036d2be976385641 (diff)
downloadjgit-7bb2a1b8440386dead8b72c329b92e2473e89e32.tar.gz
jgit-7bb2a1b8440386dead8b72c329b92e2473e89e32.zip
Handle short branch/tag name for setBranch in CloneCommand
Before, it was not clear from the documentation what kind of branch name was accepted. Users specifying "branch" (instead of "refs/heads/branch") got no error message and ended up with a repository without HEAD and no checkout. With this, CloneCommand now tries "$branch", then "refs/heads/$branch" and then "refs/tags/$branch". C Git only does the last two, but for compatibility we should still allow "refs/heads/branch". Bug: 390994 Change-Id: I4be13144f2a21a6583e0942f0c7c40da32f2247a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java40
1 files changed, 34 insertions, 6 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java
index 7422951920..31f909a5f2 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011, Chris Aniszczyk <caniszczyk@gmail.com>
+ * Copyright (C) 2011, 2013 Chris Aniszczyk <caniszczyk@gmail.com>
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
@@ -64,7 +64,6 @@ import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
-import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevBlob;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -92,11 +91,10 @@ public class CloneCommandTest extends RepositoryTestCase {
writeTrashFile("Test.txt", "Hello world");
git.add().addFilepattern("Test.txt").call();
git.commit().setMessage("Initial commit").call();
+ git.tag().setName("tag-initial").setMessage("Tag initial").call();
- // create a master branch and switch to it
- git.branchCreate().setName("test").call();
- RefUpdate rup = db.updateRef(Constants.HEAD);
- rup.link("refs/heads/test");
+ // create a test branch and switch to it
+ git.checkout().setCreateBranch(true).setName("test").call();
// commit something on the test branch
writeTrashFile("Test.txt", "Some change");
@@ -206,6 +204,36 @@ public class CloneCommandTest extends RepositoryTestCase {
}
@Test
+ public void testCloneRepositoryWithBranchShortName() throws Exception {
+ File directory = createTempDirectory("testCloneRepositoryWithBranch");
+ CloneCommand command = Git.cloneRepository();
+ command.setBranch("test");
+ command.setDirectory(directory);
+ command.setURI("file://" + git.getRepository().getWorkTree().getPath());
+ Git git2 = command.call();
+ addRepoToClose(git2.getRepository());
+
+ assertNotNull(git2);
+ assertEquals("refs/heads/test", git2.getRepository().getFullBranch());
+ }
+
+ @Test
+ public void testCloneRepositoryWithTagName() throws Exception {
+ File directory = createTempDirectory("testCloneRepositoryWithBranch");
+ CloneCommand command = Git.cloneRepository();
+ command.setBranch("tag-initial");
+ command.setDirectory(directory);
+ command.setURI("file://" + git.getRepository().getWorkTree().getPath());
+ Git git2 = command.call();
+ addRepoToClose(git2.getRepository());
+
+ assertNotNull(git2);
+ ObjectId taggedCommit = db.resolve("tag-initial^{commit}");
+ assertEquals(taggedCommit.name(), git2
+ .getRepository().getFullBranch());
+ }
+
+ @Test
public void testCloneRepositoryOnlyOneBranch() throws IOException,
JGitInternalException, GitAPIException {
File directory = createTempDirectory("testCloneRepositoryWithBranch");