Browse Source

Merge "Fix default directory set when setDirectory wasn't called."

stable-4.9
David Pursehouse 7 years ago committed by Gerrit Code Review @ Eclipse.org
parent
commit
40f40e496a
  1. 3
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
  2. 29
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java
  3. 15
      org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java

3
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java

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

29
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java

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

15
org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java

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