summaryrefslogtreecommitdiffstatsabout
diff options
context:
space:
mode:
authorKevin Sawicki2011-11-28 14:00:15 (EST)
committer Kevin Sawicki2011-11-28 14:00:15 (EST)
commit899114f63c24223b697afb42e1564fc21a3b622d (patch)
treeef23a684afa8c05f944543c33e42abc8fd894567
parentd497c2ac2da24de8865b0f113e07a559a4af951a (diff)
downloadjgit-899114f63c24223b697afb42e1564fc21a3b622d.zip
jgit-899114f63c24223b697afb42e1564fc21a3b622d.tar.gz
jgit-899114f63c24223b697afb42e1564fc21a3b622d.tar.bz2
Always checkout master when it matches the advertised HEADrefs/changes/87/4687/2
This parallels the CGit behavior of always using refs/heads/master when it matches the remote advertised HEAD commit. Change-Id: I5a5cd1516b58d116e334056aba1ef7990697ec30
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java16
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java6
2 files changed, 22 insertions, 0 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 f16fe83..0e9f672 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
@@ -236,4 +236,20 @@ public class CloneCommandTest extends RepositoryTestCase {
assertTrue(e.getMessage().contains(dirName));
}
}
+
+ @Test
+ public void testCloneRepositoryWithMultipleHeadBranches() throws Exception {
+ git.checkout().setName(Constants.MASTER).call();
+ git.branchCreate().setName("a").call();
+
+ File directory = createTempDirectory("testCloneRepositoryWithMultipleHeadBranches");
+ CloneCommand clone = Git.cloneRepository();
+ clone.setDirectory(directory);
+ clone.setURI("file://" + git.getRepository().getWorkTree().getPath());
+ Git git2 = clone.call();
+ addRepoToClose(git2.getRepository());
+ assertNotNull(git2);
+
+ assertEquals(Constants.MASTER, git2.getRepository().getBranch());
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
index dbc126e..b779c48 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
@@ -229,6 +229,12 @@ public class CloneCommand extends TransportCommand<CloneCommand, Git> {
final Ref idHEAD = result.getAdvertisedRef(Constants.HEAD);
if (idHEAD == null)
return null;
+
+ Ref master = result.getAdvertisedRef(Constants.R_HEADS
+ + Constants.MASTER);
+ if (master != null && master.getObjectId().equals(idHEAD.getObjectId()))
+ return master;
+
Ref foundBranch = null;
for (final Ref r : result.getAdvertisedRefs()) {
final String n = r.getName();