From 9b26e4bffb06ddf12c9c3040e3f25482655d1d89 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Sun, 21 Jul 2013 16:23:12 +0200 Subject: 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 Signed-off-by: Matthias Sohn --- org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java | 11 +++++++++++ .../src/org/eclipse/jgit/api/LsRemoteCommand.java | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'org.eclipse.jgit/src/org/eclipse/jgit') diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java index 7a521263d5..b643cbe25d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/Git.java @@ -137,6 +137,17 @@ public class Git { 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 * diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/LsRemoteCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/LsRemoteCommand.java index 3843dc4a18..55ca58f9cb 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/LsRemoteCommand.java +++ b/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.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 class LsRemoteCommand extends 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 refSpecs = new ArrayList(1); -- cgit v1.2.3