Enable LsRemoteCommand to work without local repository
It's supported by C Git and can be useful. Bug: 413388 Change-Id: I12c6c10e791cc09ee271d89eb8b8d32f53e385db Signed-off-by: Robin Stocker <robin@nibor.org> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
6fb8d2345b
commit
9b26e4bffb
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2011, Chris Aniszczyk <caniszczyk@gmail.com>
|
||||
* Copyright (C) 2011, 2013 Chris Aniszczyk <caniszczyk@gmail.com> and others.
|
||||
* and other copyright owners as documented in the project's IP log.
|
||||
*
|
||||
* This program and the accompanying materials are made available
|
||||
|
@ -128,4 +128,12 @@ public void testLsRemoteWithHeads() throws Exception {
|
|||
assertEquals(2, refs.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLsRemoteWithoutLocalRepository() throws Exception {
|
||||
String uri = "file://" + git.getRepository().getWorkTree().getPath();
|
||||
Collection<Ref> refs = Git.lsRemoteRepository().setRemote(uri).setHeads(true).call();
|
||||
assertNotNull(refs);
|
||||
assertEquals(2, refs.size());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -137,6 +137,17 @@ public static CloneCommand cloneRepository() {
|
|||
return new CloneCommand();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a command to list remote branches/tags without a local
|
||||
* repository.
|
||||
*
|
||||
* @return a {@link LsRemoteCommand}
|
||||
* @since 3.1
|
||||
*/
|
||||
public static LsRemoteCommand lsRemoteRepository() {
|
||||
return new LsRemoteCommand(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a command object to execute a {@code init} command
|
||||
*
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
import org.eclipse.jgit.transport.FetchConnection;
|
||||
import org.eclipse.jgit.transport.RefSpec;
|
||||
import org.eclipse.jgit.transport.Transport;
|
||||
import org.eclipse.jgit.transport.URIish;
|
||||
|
||||
/**
|
||||
* The ls-remote command
|
||||
|
@ -82,6 +83,8 @@ public class LsRemoteCommand extends
|
|||
|
||||
/**
|
||||
* @param repo
|
||||
* local repository or null for operation without local
|
||||
* repository
|
||||
*/
|
||||
public LsRemoteCommand(Repository repo) {
|
||||
super(repo);
|
||||
|
@ -155,7 +158,10 @@ public Collection<Ref> call() throws GitAPIException,
|
|||
Transport transport = null;
|
||||
FetchConnection fc = null;
|
||||
try {
|
||||
transport = Transport.open(repo, remote);
|
||||
if (repo != null)
|
||||
transport = Transport.open(repo, remote);
|
||||
else
|
||||
transport = Transport.open(new URIish(remote));
|
||||
transport.setOptionUploadPack(uploadPack);
|
||||
configure(transport);
|
||||
Collection<RefSpec> refSpecs = new ArrayList<RefSpec>(1);
|
||||
|
|
Loading…
Reference in New Issue