1 package org
.spearce
.jgit
.fetch
;
3 import java
.io
.IOException
;
5 import org
.spearce
.jgit
.lib
.Commit
;
6 import org
.spearce
.jgit
.lib
.LockFile
;
7 import org
.spearce
.jgit
.lib
.ObjectWriter
;
8 import org
.spearce
.jgit
.lib
.PersonIdent
;
9 import org
.spearce
.jgit
.lib
.Repository
;
10 import org
.spearce
.jgit
.lib
.RepositoryTestCase
;
11 import org
.spearce
.jgit
.lib
.TextProgressMonitor
;
13 public class FetchTest
extends RepositoryTestCase
{
15 public void testSimpleFullLocalClone() throws IOException
{
16 final Repository newRepo
= createNewEmptyRepo();
17 FetchClient client
= LocalGitProtocolFetchClient
.create(newRepo
, "origintest", trash_git
);
18 client
.run(new TextProgressMonitor());
20 assertEquals("6db9c2ebf75590eef973081736730a9ea169a0c4", newRepo
.mapCommit("remotes/origintest/a").getCommitId().toString());
21 assertEquals("17768080a2318cd89bba4c8b87834401e2095703", newRepo
.mapTag("refs/tags/B").getTagId().toString());
22 assertEquals("d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864", newRepo
.mapTag("refs/tags/B").getObjId().toString());
23 assertEquals("6db9c2ebf75590eef973081736730a9ea169a0c4", newRepo
.mapTag("refs/tags/A").getObjId().toString());
24 assertNull(newRepo
.mapTag("refs/tags/A").getTagId());
26 // Now do an incremental update test too, a non-fast-forward
27 Commit commit
= new Commit(db
);
28 commit
.setAuthor(new PersonIdent(jauthor
, 100, 1));
29 commit
.setCommitter(new PersonIdent(jcommitter
, 101,2));
30 commit
.setMessage("Update");
31 commit
.setTree(db
.mapTree("refs/heads/a"));
32 ObjectWriter ow
= new ObjectWriter(db
);
33 commit
.setCommitId(ow
.writeCommit(commit
));
34 LockFile lockRef
= db
.lockRef("refs/heads/a");
35 lockRef
.write(commit
.getCommitId());
36 if (!lockRef
.commit())
37 throw new IllegalStateException("Could not update refs/heafs/a in test");
39 FetchClient client2
= LocalGitProtocolFetchClient
.create(newRepo
, "origintest", trash_git
);
40 client2
.run(new TextProgressMonitor());
42 assertEquals("9bac73222088373f5a41ed64994adc881a0a27b6", newRepo
.mapCommit("remotes/origintest/a").getCommitId().toString());
43 // the rest is unchanged
44 assertEquals("17768080a2318cd89bba4c8b87834401e2095703", newRepo
.mapTag("refs/tags/B").getTagId().toString());
45 assertEquals("d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864", newRepo
.mapTag("refs/tags/B").getObjId().toString());
46 assertEquals("6db9c2ebf75590eef973081736730a9ea169a0c4", newRepo
.mapTag("refs/tags/A").getObjId().toString());
47 assertNull(newRepo
.mapTag("refs/tags/A").getTagId());