Fixed the problem with calling LsRemoteCommand without a local repository over the ssh and git:// protocols.

Bug: 436695
Change-Id: Ifd69fbc04156fa4dacdcba6225768f43843eee97
Signed-off-by: Anton Bannykh <anton.bannykh@gmail.com>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
This commit is contained in:
Anton Bannykh 2014-06-05 17:54:01 +04:00 committed by Robin Rosenberg
parent 64b0531c35
commit f4943de29b
4 changed files with 50 additions and 1 deletions

View File

@ -50,6 +50,7 @@
import org.eclipse.jgit.errors.TransportException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.util.FS;
/**
* The base class for transports that use SSH protocol. This class allows
@ -80,6 +81,18 @@ protected SshTransport(Repository local, URIish uri) {
sch = SshSessionFactory.getInstance();
}
/**
* Create a new transport instance without a local repository.
*
* @param uri the URI used to access the remote repository. This must be the
* URI passed to {@link #open(URIish)}.
* @since 3.5
*/
protected SshTransport(URIish uri) {
super(uri);
sch = SshSessionFactory.getInstance();
}
/**
* Set SSH session factory instead of the default one for this instance of
* the transport.
@ -118,8 +131,10 @@ protected RemoteSession getSession() throws TransportException {
final int tms = getTimeout() > 0 ? getTimeout() * 1000 : 0;
final FS fs = local == null ? FS.detect() : local.getFS();
sock = sch
.getSession(uri, getCredentialsProvider(), local.getFS(), tms);
.getSession(uri, getCredentialsProvider(), fs, tms);
return sock;
}

View File

@ -66,4 +66,15 @@ public abstract class TcpTransport extends Transport {
protected TcpTransport(Repository local, URIish uri) {
super(local, uri);
}
/**
* Create a new transport instance without a local repository.
*
* @param uri the URI used to access the remote repository. This must be the
* URI passed to {@link #open(URIish)}.
* @since 3.5
*/
protected TcpTransport(URIish uri) {
super(uri);
}
}

View File

@ -100,12 +100,21 @@ public Transport open(URIish uri, Repository local, String remoteName)
throws NotSupportedException {
return new TransportGitAnon(local, uri);
}
@Override
public Transport open(URIish uri) throws NotSupportedException, TransportException {
return new TransportGitAnon(uri);
}
};
TransportGitAnon(final Repository local, final URIish uri) {
super(local, uri);
}
TransportGitAnon(final URIish uri) {
super(uri);
}
@Override
public FetchConnection openFetch() throws TransportException {
return new TcpFetchConnection();

View File

@ -126,10 +126,24 @@ public Transport open(URIish uri, Repository local, String remoteName)
throws NotSupportedException {
return new TransportGitSsh(local, uri);
}
@Override
public Transport open(URIish uri) throws NotSupportedException, TransportException {
return new TransportGitSsh(uri);
}
};
TransportGitSsh(final Repository local, final URIish uri) {
super(local, uri);
initSshSessionFactory();
}
TransportGitSsh(final URIish uri) {
super(uri);
initSshSessionFactory();
}
private void initSshSessionFactory() {
if (useExtSession()) {
setSshSessionFactory(new SshSessionFactory() {
@Override