import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.SampleDataRepositoryTestCase;
+import org.eclipse.jgit.storage.file.FileRepository;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
assertEquals(ObjectId.zeroId(), tru.getOldObjectId());
}
+ @Test
+ public void testLocalTransportWithRelativePath() throws Exception {
+ FileRepository other = createWorkRepository();
+ String otherDir = other.getWorkTree().getName();
+
+ RemoteConfig config = new RemoteConfig(db.getConfig(), "other");
+ config.addURI(new URIish("../" + otherDir));
+
+ // Should not throw NoRemoteRepositoryException
+ transport = Transport.open(db, config);
+ }
+
@Test
public void testSpi() {
List<TransportProtocol> protocols = Transport.getTransportProtocols();
@Override
public Transport open(URIish uri, Repository local, String remoteName)
throws NoRemoteRepositoryException {
+ File localPath = local.isBare() ? local.getDirectory() : local.getWorkTree();
+ File path = local.getFS().resolve(localPath, uri.getPath());
// If the reference is to a local file, C Git behavior says
// assume this is a bundle, since repositories are directories.
- //
- File path = local.getFS().resolve(new File("."), uri.getPath());
if (path.isFile())
return new TransportBundleFile(local, uri, path);