@@ -50,6 +50,7 @@ package org.eclipse.jgit.transport; | |||
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 @@ public abstract class SshTransport extends TcpTransport { | |||
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 @@ public abstract class SshTransport extends TcpTransport { | |||
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; | |||
} | |||
@@ -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); | |||
} | |||
} |
@@ -100,12 +100,21 @@ class TransportGitAnon extends TcpTransport implements PackTransport { | |||
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(); |
@@ -126,10 +126,24 @@ public class TransportGitSsh extends SshTransport implements PackTransport { | |||
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 |