Browse Source

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>
stable-3.1
Robin Stocker 12 years ago committed by Matthias Sohn
parent
commit
9b26e4bffb
  1. 10
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LsRemoteCommandTest.java
  2. 11
      org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java
  3. 6
      org.eclipse.jgit/src/org/eclipse/jgit/api/LsRemoteCommand.java

10
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LsRemoteCommandTest.java

@ -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. * and other copyright owners as documented in the project's IP log.
* *
* This program and the accompanying materials are made available * This program and the accompanying materials are made available
@ -128,4 +128,12 @@ public class LsRemoteCommandTest extends RepositoryTestCase {
assertEquals(2, refs.size()); 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());
}
} }

11
org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java

@ -137,6 +137,17 @@ public class Git {
return new CloneCommand(); 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 * Returns a command object to execute a {@code init} command
* *

6
org.eclipse.jgit/src/org/eclipse/jgit/api/LsRemoteCommand.java

@ -61,6 +61,7 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.FetchConnection; import org.eclipse.jgit.transport.FetchConnection;
import org.eclipse.jgit.transport.RefSpec; import org.eclipse.jgit.transport.RefSpec;
import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.Transport;
import org.eclipse.jgit.transport.URIish;
/** /**
* The ls-remote command * The ls-remote command
@ -82,6 +83,8 @@ public class LsRemoteCommand extends
/** /**
* @param repo * @param repo
* local repository or null for operation without local
* repository
*/ */
public LsRemoteCommand(Repository repo) { public LsRemoteCommand(Repository repo) {
super(repo); super(repo);
@ -155,7 +158,10 @@ public class LsRemoteCommand extends
Transport transport = null; Transport transport = null;
FetchConnection fc = null; FetchConnection fc = null;
try { try {
if (repo != null)
transport = Transport.open(repo, remote); transport = Transport.open(repo, remote);
else
transport = Transport.open(new URIish(remote));
transport.setOptionUploadPack(uploadPack); transport.setOptionUploadPack(uploadPack);
configure(transport); configure(transport);
Collection<RefSpec> refSpecs = new ArrayList<RefSpec>(1); Collection<RefSpec> refSpecs = new ArrayList<RefSpec>(1);

Loading…
Cancel
Save