Browse Source

Add support for autosetuprebase to the CloneCommand

Bug: 345536
Change-Id: I93c609235dec4e5e3a2ddc275c28b202bf868d40
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
Signed-off-by: Kevin Sawicki <kevin@github.com>
stable-2.0
Stefan Lay 13 years ago committed by Kevin Sawicki
parent
commit
54f23873d6
  1. 53
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java
  2. 8
      org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java

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

@ -43,6 +43,7 @@
package org.eclipse.jgit.api;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@ -65,8 +66,10 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryTestCase;
import org.eclipse.jgit.revwalk.RevBlob;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.submodule.SubmoduleStatus;
import org.eclipse.jgit.submodule.SubmoduleStatusType;
import org.eclipse.jgit.util.SystemReader;
import org.junit.Test;
public class CloneCommandTest extends RepositoryTestCase {
@ -299,4 +302,54 @@ public class CloneCommandTest extends RepositoryTestCase {
assertEquals(commit, pathStatus.getHeadId());
assertEquals(commit, pathStatus.getIndexId());
}
@Test
public void testCloneWithAutoSetupRebase() throws Exception {
File directory = createTempDirectory("testCloneRepository1");
CloneCommand command = Git.cloneRepository();
command.setDirectory(directory);
command.setURI("file://" + git.getRepository().getWorkTree().getPath());
Git git2 = command.call();
addRepoToClose(git2.getRepository());
assertFalse(git2
.getRepository()
.getConfig()
.getBoolean(ConfigConstants.CONFIG_BRANCH_SECTION, "test",
ConfigConstants.CONFIG_KEY_REBASE, false));
FileBasedConfig userConfig = SystemReader.getInstance().openUserConfig(
null, git.getRepository().getFS());
userConfig.setString(ConfigConstants.CONFIG_BRANCH_SECTION, null,
ConfigConstants.CONFIG_KEY_AUTOSETUPREBASE,
ConfigConstants.CONFIG_KEY_ALWAYS);
userConfig.save();
directory = createTempDirectory("testCloneRepository2");
command = Git.cloneRepository();
command.setDirectory(directory);
command.setURI("file://" + git.getRepository().getWorkTree().getPath());
git2 = command.call();
addRepoToClose(git2.getRepository());
assertTrue(git2
.getRepository()
.getConfig()
.getBoolean(ConfigConstants.CONFIG_BRANCH_SECTION, "test",
ConfigConstants.CONFIG_KEY_REBASE, false));
userConfig.setString(ConfigConstants.CONFIG_BRANCH_SECTION, null,
ConfigConstants.CONFIG_KEY_AUTOSETUPREBASE,
ConfigConstants.CONFIG_KEY_REMOTE);
userConfig.save();
directory = createTempDirectory("testCloneRepository2");
command = Git.cloneRepository();
command.setDirectory(directory);
command.setURI("file://" + git.getRepository().getWorkTree().getPath());
git2 = command.call();
addRepoToClose(git2.getRepository());
assertTrue(git2
.getRepository()
.getConfig()
.getBoolean(ConfigConstants.CONFIG_BRANCH_SECTION, "test",
ConfigConstants.CONFIG_KEY_REBASE, false));
}
}

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

@ -270,6 +270,14 @@ public class CloneCommand extends TransportCommand<CloneCommand, Git> {
branchName, ConfigConstants.CONFIG_KEY_REMOTE, remote);
clonedRepo.getConfig().setString(ConfigConstants.CONFIG_BRANCH_SECTION,
branchName, ConfigConstants.CONFIG_KEY_MERGE, head.getName());
String autosetupRebase = clonedRepo.getConfig().getString(
ConfigConstants.CONFIG_BRANCH_SECTION, null,
ConfigConstants.CONFIG_KEY_AUTOSETUPREBASE);
if (ConfigConstants.CONFIG_KEY_ALWAYS.equals(autosetupRebase)
|| ConfigConstants.CONFIG_KEY_REMOTE.equals(autosetupRebase))
clonedRepo.getConfig().setBoolean(
ConfigConstants.CONFIG_BRANCH_SECTION, branchName,
ConfigConstants.CONFIG_KEY_REBASE, true);
clonedRepo.getConfig().save();
}

Loading…
Cancel
Save