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>
tags/v3.5.0.201409071800-rc1
Anton Bannykh 10 years ago
parent
commit
f4943de29b

+ 16
- 1
org.eclipse.jgit/src/org/eclipse/jgit/transport/SshTransport.java View File

@@ -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;
}


+ 11
- 0
org.eclipse.jgit/src/org/eclipse/jgit/transport/TcpTransport.java 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);
}
}

+ 9
- 0
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java View File

@@ -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();

+ 14
- 0
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java View File

@@ -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

Loading…
Cancel
Save