Merge "Fix corrupted CloneCommand bare-repo fetch-refspec (#402031)"
This commit is contained in:
commit
22625cd1d8
|
@ -50,6 +50,7 @@
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -71,6 +72,8 @@
|
||||||
import org.eclipse.jgit.submodule.SubmoduleStatus;
|
import org.eclipse.jgit.submodule.SubmoduleStatus;
|
||||||
import org.eclipse.jgit.submodule.SubmoduleStatusType;
|
import org.eclipse.jgit.submodule.SubmoduleStatusType;
|
||||||
import org.eclipse.jgit.submodule.SubmoduleWalk;
|
import org.eclipse.jgit.submodule.SubmoduleWalk;
|
||||||
|
import org.eclipse.jgit.transport.RefSpec;
|
||||||
|
import org.eclipse.jgit.transport.RemoteConfig;
|
||||||
import org.eclipse.jgit.util.SystemReader;
|
import org.eclipse.jgit.util.SystemReader;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -105,7 +108,7 @@ public void setUp() throws Exception {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCloneRepository() throws IOException,
|
public void testCloneRepository() throws IOException,
|
||||||
JGitInternalException, GitAPIException {
|
JGitInternalException, GitAPIException, URISyntaxException {
|
||||||
File directory = createTempDirectory("testCloneRepository");
|
File directory = createTempDirectory("testCloneRepository");
|
||||||
CloneCommand command = Git.cloneRepository();
|
CloneCommand command = Git.cloneRepository();
|
||||||
command.setDirectory(directory);
|
command.setDirectory(directory);
|
||||||
|
@ -130,6 +133,28 @@ public void testCloneRepository() throws IOException,
|
||||||
"test", ConfigConstants.CONFIG_KEY_MERGE));
|
"test", ConfigConstants.CONFIG_KEY_MERGE));
|
||||||
assertEquals(2, git2.branchList().setListMode(ListMode.REMOTE).call()
|
assertEquals(2, git2.branchList().setListMode(ListMode.REMOTE).call()
|
||||||
.size());
|
.size());
|
||||||
|
assertEquals(new RefSpec("+refs/heads/*:refs/remotes/origin/*"),
|
||||||
|
fetchRefSpec(git2.getRepository()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBareCloneRepository() throws IOException,
|
||||||
|
JGitInternalException, GitAPIException, URISyntaxException {
|
||||||
|
File directory = createTempDirectory("testCloneRepository_bare");
|
||||||
|
CloneCommand command = Git.cloneRepository();
|
||||||
|
command.setBare(true);
|
||||||
|
command.setDirectory(directory);
|
||||||
|
command.setURI("file://" + git.getRepository().getWorkTree().getPath());
|
||||||
|
Git git2 = command.call();
|
||||||
|
addRepoToClose(git2.getRepository());
|
||||||
|
assertEquals(new RefSpec("+refs/heads/*:refs/heads/*"),
|
||||||
|
fetchRefSpec(git2.getRepository()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RefSpec fetchRefSpec(Repository r) throws URISyntaxException {
|
||||||
|
RemoteConfig remoteConfig =
|
||||||
|
new RemoteConfig(r.getConfig(), Constants.DEFAULT_REMOTE_NAME);
|
||||||
|
return remoteConfig.getFetchRefSpecs().get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -154,12 +154,13 @@ private FetchResult fetch(Repository clonedRepo, URIish u)
|
||||||
RemoteConfig config = new RemoteConfig(clonedRepo.getConfig(), remote);
|
RemoteConfig config = new RemoteConfig(clonedRepo.getConfig(), remote);
|
||||||
config.addURI(u);
|
config.addURI(u);
|
||||||
|
|
||||||
final String dst = bare ? Constants.R_HEADS : Constants.R_REMOTES
|
final String dst = (bare ? Constants.R_HEADS : Constants.R_REMOTES
|
||||||
+ config.getName();
|
+ config.getName() + "/") + "*";
|
||||||
RefSpec refSpec = new RefSpec();
|
RefSpec refSpec = new RefSpec();
|
||||||
refSpec = refSpec.setForceUpdate(true);
|
refSpec = refSpec.setForceUpdate(true);
|
||||||
refSpec = refSpec.setSourceDestination(
|
refSpec = refSpec.setSourceDestination(
|
||||||
Constants.R_HEADS + "*", dst + "/*"); //$NON-NLS-1$ //$NON-NLS-2$
|
Constants.R_HEADS + "*", dst); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
|
||||||
|
|
||||||
config.addFetchRefSpec(refSpec);
|
config.addFetchRefSpec(refSpec);
|
||||||
config.update(clonedRepo.getConfig());
|
config.update(clonedRepo.getConfig());
|
||||||
|
@ -182,7 +183,7 @@ private FetchResult fetch(Repository clonedRepo, URIish u)
|
||||||
private List<RefSpec> calculateRefSpecs(final String dst) {
|
private List<RefSpec> calculateRefSpecs(final String dst) {
|
||||||
RefSpec wcrs = new RefSpec();
|
RefSpec wcrs = new RefSpec();
|
||||||
wcrs = wcrs.setForceUpdate(true);
|
wcrs = wcrs.setForceUpdate(true);
|
||||||
wcrs = wcrs.setSourceDestination(Constants.R_HEADS + "*", dst + "/*"); //$NON-NLS-1$ //$NON-NLS-2$
|
wcrs = wcrs.setSourceDestination(Constants.R_HEADS + "*", dst); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
List<RefSpec> specs = new ArrayList<RefSpec>();
|
List<RefSpec> specs = new ArrayList<RefSpec>();
|
||||||
if (cloneAllBranches)
|
if (cloneAllBranches)
|
||||||
specs.add(wcrs);
|
specs.add(wcrs);
|
||||||
|
|
Loading…
Reference in New Issue