Browse Source

Fix default directory set when setDirectory wasn't called.

Bug: 519883
Change-Id: I46716e9626b4c4adc0806a7c8df6914309040b94
Signed-off-by: Joan Goyeau <joan@goyeau.com>
tags/v4.9.0.201710071750-r
Joan Goyeau 6 years ago
parent
commit
88e453995d

+ 3
- 0
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java View File

@@ -101,6 +101,9 @@ class Clone extends AbstractFetchCommand implements CloneCommand.Callback {
if (localName == null) {
try {
localName = uri.getHumanishName();
if (isBare) {
localName = localName + Constants.DOT_GIT_EXT;
}
localNameF = new File(SystemReader.getInstance().getProperty(
Constants.OS_USER_DIR), localName);
} catch (IllegalArgumentException e) {

+ 25
- 4
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java View File

@@ -76,6 +76,7 @@ import org.eclipse.jgit.submodule.SubmoduleStatusType;
import org.eclipse.jgit.submodule.SubmoduleWalk;
import org.eclipse.jgit.transport.RefSpec;
import org.eclipse.jgit.transport.RemoteConfig;
import org.eclipse.jgit.transport.URIish;
import org.eclipse.jgit.util.SystemReader;
import org.junit.Test;

@@ -145,15 +146,35 @@ public class CloneCommandTest extends RepositoryTestCase {
File directory = createTempDirectory("testCloneRepository");
CloneCommand command = Git.cloneRepository();
command.setDirectory(directory);
command.setGitDir(new File(directory, ".git"));
command.setGitDir(new File(directory, Constants.DOT_GIT));
command.setURI(fileUri());
Git git2 = command.call();
addRepoToClose(git2.getRepository());
assertEquals(directory, git2.getRepository().getWorkTree());
assertEquals(new File(directory, ".git"), git2.getRepository()
assertEquals(new File(directory, Constants.DOT_GIT), git2.getRepository()
.getDirectory());
}

@Test
public void testCloneRepositoryDefaultDirectory() throws IOException, URISyntaxException,
JGitInternalException, GitAPIException {
CloneCommand command = Git.cloneRepository().setURI(fileUri());

command.verifyDirectories(new URIish(fileUri()));
File directory = command.getDirectory();
assertEquals(git.getRepository().getWorkTree().getName(), directory.getName());
}

@Test
public void testCloneBareRepositoryDefaultDirectory() throws IOException, URISyntaxException,
JGitInternalException, GitAPIException {
CloneCommand command = Git.cloneRepository().setURI(fileUri()).setBare(true);

command.verifyDirectories(new URIish(fileUri()));
File directory = command.getDirectory();
assertEquals(git.getRepository().getWorkTree().getName() + Constants.DOT_GIT_EXT, directory.getName());
}

@Test
public void testCloneRepositoryExplicitGitDirNonStd() throws IOException,
JGitInternalException, GitAPIException {
@@ -168,8 +189,8 @@ public class CloneCommandTest extends RepositoryTestCase {
assertEquals(directory, git2.getRepository().getWorkTree());
assertEquals(gDir, git2.getRepository()
.getDirectory());
assertTrue(new File(directory, ".git").isFile());
assertFalse(new File(gDir, ".git").exists());
assertTrue(new File(directory, Constants.DOT_GIT).isFile());
assertFalse(new File(gDir, Constants.DOT_GIT).exists());
}

@Test

+ 13
- 2
org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java View File

@@ -50,6 +50,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.eclipse.jgit.annotations.Nullable;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.JGitInternalException;
@@ -156,6 +157,16 @@ public class CloneCommand extends TransportCommand<CloneCommand, Git> {
super(null);
}

/**
* Get the git directory. This is primarily used for tests.
*
* @return the git directory
*/
@Nullable
File getDirectory() {
return directory;
}

/**
* Executes the {@code Clone} command.
*
@@ -232,9 +243,9 @@ public class CloneCommand extends TransportCommand<CloneCommand, Git> {
return false;
}

private void verifyDirectories(URIish u) {
void verifyDirectories(URIish u) {
if (directory == null && gitDir == null) {
directory = new File(u.getHumanishName(), Constants.DOT_GIT);
directory = new File(u.getHumanishName() + (bare ? Constants.DOT_GIT_EXT : "")); //$NON-NLS-1$
}
directoryExistsInitially = directory != null && directory.exists();
gitDirExistsInitially = gitDir != null && gitDir.exists();

Loading…
Cancel
Save