From 54f23873d60f3b7f70427f5db9ff2a93229a193e Mon Sep 17 00:00:00 2001 From: Stefan Lay Date: Thu, 23 Feb 2012 09:32:02 -0800 Subject: [PATCH] Add support for autosetuprebase to the CloneCommand Bug: 345536 Change-Id: I93c609235dec4e5e3a2ddc275c28b202bf868d40 Signed-off-by: Stefan Lay Signed-off-by: Kevin Sawicki --- .../eclipse/jgit/api/CloneCommandTest.java | 53 +++++++++++++++++++ .../org/eclipse/jgit/api/CloneCommand.java | 8 +++ 2 files changed, 61 insertions(+) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java index ea59b1447..b63a4158f 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java +++ b/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)); + + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java index ae72b770f..3a0d8f55e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java @@ -270,6 +270,14 @@ public class CloneCommand extends TransportCommand { 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(); }