summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2019-10-19 01:52:51 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2019-10-21 09:27:13 +0200
commit6216b0de8a829fa764b8c8c51095cf0c5964213f (patch)
tree0f9f0d148305799bf7739fe8085348150dd47eee /org.eclipse.jgit.test
parent8e356fc45e2b169572088ebdfb931ca788a5e220 (diff)
downloadjgit-6216b0de8a829fa764b8c8c51095cf0c5964213f.tar.gz
jgit-6216b0de8a829fa764b8c8c51095cf0c5964213f.zip
Implement mirror option in CloneCommand
Bug: 552173 Change-Id: If79adf578b303890314a3285d7a6d2c71f48d091 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CloneCommandTest.java34
1 files changed, 33 insertions, 1 deletions
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 b4abb53d84..63fe4212ba 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
@@ -67,6 +67,7 @@ import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.revwalk.RevBlob;
@@ -96,10 +97,15 @@ public class CloneCommandTest extends RepositoryTestCase {
writeTrashFile("Test.txt", "Hello world");
git.add().addFilepattern("Test.txt").call();
git.commit().setMessage("Initial commit").call();
- git.tag().setName("tag-initial").setMessage("Tag initial").call();
+ Ref head = git.tag().setName("tag-initial").setMessage("Tag initial")
+ .call();
// create a test branch and switch to it
git.checkout().setCreateBranch(true).setName("test").call();
+ // create a non-standard ref
+ RefUpdate ru = db.updateRef("refs/meta/foo/bar");
+ ru.setNewObjectId(head.getObjectId());
+ ru.update();
// commit something on the test branch
writeTrashFile("Test.txt", "Some change");
@@ -425,6 +431,32 @@ public class CloneCommandTest extends RepositoryTestCase {
}
@Test
+ public void testBareCloneRepositoryMirror() throws Exception {
+ File directory = createTempDirectory(
+ "testCloneRepositoryWithBranch_mirror");
+ CloneCommand command = Git.cloneRepository();
+ command.setBranch("refs/heads/master");
+ command.setMirror(true); // implies bare repository
+ command.setDirectory(directory);
+ command.setURI(fileUri());
+ Git git2 = command.call();
+ addRepoToClose(git2.getRepository());
+ assertNotNull(git2);
+ assertNotNull(git2.getRepository().resolve("tag-for-blob"));
+ assertNotNull(git2.getRepository().resolve("tag-initial"));
+ assertEquals(git2.getRepository().getFullBranch(), "refs/heads/master");
+ assertEquals("refs/heads/master, refs/heads/test", allRefNames(
+ git2.branchList().setListMode(ListMode.ALL).call()));
+ assertNotNull(git2.getRepository().exactRef("refs/meta/foo/bar"));
+ RemoteConfig cfg = new RemoteConfig(git2.getRepository().getConfig(),
+ Constants.DEFAULT_REMOTE_NAME);
+ List<RefSpec> specs = cfg.getFetchRefSpecs();
+ assertEquals(1, specs.size());
+ assertEquals(new RefSpec("+refs/*:refs/*"),
+ specs.get(0));
+ }
+
+ @Test
public void testCloneRepositoryOnlyOneTag() throws Exception {
File directory = createTempDirectory("testCloneRepositoryWithBranch");
CloneCommand command = Git.cloneRepository();