Browse Source

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>
stable-3.5
Anton Bannykh 11 years ago committed by Robin Rosenberg
parent
commit
f4943de29b
  1. 17
      org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java
  2. 11
      org.eclipse.jgit/src/org/eclipse/jgit/transport/TcpTransport.java
  3. 9
      org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java
  4. 14
      org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java

17
org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java

@ -50,6 +50,7 @@ package org.eclipse.jgit.transport;
import org.eclipse.jgit.errors.TransportException; import org.eclipse.jgit.errors.TransportException;
import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.util.FS;
/** /**
* The base class for transports that use SSH protocol. This class allows * 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(); 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 * Set SSH session factory instead of the default one for this instance of
* the transport. * the transport.
@ -118,8 +131,10 @@ public abstract class SshTransport extends TcpTransport {
final int tms = getTimeout() > 0 ? getTimeout() * 1000 : 0; final int tms = getTimeout() > 0 ? getTimeout() * 1000 : 0;
final FS fs = local == null ? FS.detect() : local.getFS();
sock = sch sock = sch
.getSession(uri, getCredentialsProvider(), local.getFS(), tms); .getSession(uri, getCredentialsProvider(), fs, tms);
return sock; return sock;
} }

11
org.eclipse.jgit/src/org/eclipse/jgit/transport/TcpTransport.java

@ -66,4 +66,15 @@ public abstract class TcpTransport extends Transport {
protected TcpTransport(Repository local, URIish uri) { protected TcpTransport(Repository local, URIish uri) {
super(local, 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);
}
} }

9
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java

@ -100,12 +100,21 @@ class TransportGitAnon extends TcpTransport implements PackTransport {
throws NotSupportedException { throws NotSupportedException {
return new TransportGitAnon(local, uri); 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) { TransportGitAnon(final Repository local, final URIish uri) {
super(local, uri); super(local, uri);
} }
TransportGitAnon(final URIish uri) {
super(uri);
}
@Override @Override
public FetchConnection openFetch() throws TransportException { public FetchConnection openFetch() throws TransportException {
return new TcpFetchConnection(); return new TcpFetchConnection();

14
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java

@ -126,10 +126,24 @@ public class TransportGitSsh extends SshTransport implements PackTransport {
throws NotSupportedException { throws NotSupportedException {
return new TransportGitSsh(local, uri); 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) { TransportGitSsh(final Repository local, final URIish uri) {
super(local, uri); super(local, uri);
initSshSessionFactory();
}
TransportGitSsh(final URIish uri) {
super(uri);
initSshSessionFactory();
}
private void initSshSessionFactory() {
if (useExtSession()) { if (useExtSession()) {
setSshSessionFactory(new SshSessionFactory() { setSshSessionFactory(new SshSessionFactory() {
@Override @Override

Loading…
Cancel
Save