Always checkout master when it matches the advertised HEAD
This parallels the CGit behavior of always using refs/heads/master when it matches the remote advertised HEAD commit. Change-Id: I5a5cd1516b58d116e334056aba1ef7990697ec30
This commit is contained in:
parent
d497c2ac2d
commit
899114f63c
|
@ -236,4 +236,20 @@ public void testCloneRepositoryWhenDestinationDirectoryExistsAndIsNotEmpty()
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -229,6 +229,12 @@ private Ref findBranchToCheckout(FetchResult result) {
|
|||
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();
|
||||
|
|
Loading…
Reference in New Issue