Search in sources :

Example 21 with MergeReport

use of org.locationtech.geogig.api.porcelain.MergeOp.MergeReport in project GeoGig by boundlessgeo.

the class CloneOpTest method testCloneWithMergeCommit.

@Test
public void testCloneWithMergeCommit() throws Exception {
    // Commit several features to the remote
    LinkedList<RevCommit> expectedMaster = new LinkedList<RevCommit>();
    LinkedList<RevCommit> expectedBranch = new LinkedList<RevCommit>();
    insertAndAdd(remoteGeogig.geogig, points1);
    RevCommit commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    expectedBranch.addFirst(commit);
    insertAndAdd(remoteGeogig.geogig, points1_modified);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    expectedBranch.addFirst(commit);
    // Create and checkout branch1
    remoteGeogig.geogig.command(BranchCreateOp.class).setAutoCheckout(true).setName("Branch1").call();
    // Commit a change to branch1
    insertAndAdd(remoteGeogig.geogig, points2);
    RevCommit branch1commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedBranch.addFirst(branch1commit);
    // Make sure Branch1 has all of the commits
    Iterator<RevCommit> logs = remoteGeogig.geogig.command(LogOp.class).call();
    List<RevCommit> logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedBranch, logged);
    // Checkout master and commit some changes
    remoteGeogig.geogig.command(CheckoutOp.class).setSource("master").call();
    insertAndAdd(remoteGeogig.geogig, lines1);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    insertAndAdd(remoteGeogig.geogig, lines2);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    // Make sure master has all of the commits
    logs = remoteGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedMaster, logged);
    // Merge branch1 into master
    MergeReport report = remoteGeogig.geogig.command(MergeOp.class).addCommit(Suppliers.ofInstance(branch1commit.getId())).call();
    expectedMaster.addFirst(report.getMergeCommit());
    // Delete Branch1
    // Create and checkout branch1
    remoteGeogig.geogig.command(BranchDeleteOp.class).setName("Branch1").call();
    // clone from the remote
    CloneOp clone = clone();
    clone.setRepositoryURL(remoteGeogig.envHome.getCanonicalPath()).setBranch("master").call();
    // Make sure the local repository got all of the commits
    logs = localGeogig.geogig.command(LogOp.class).setFirstParentOnly(true).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedMaster, logged);
}
Also used : MergeReport(org.locationtech.geogig.api.porcelain.MergeOp.MergeReport) CloneOp(org.locationtech.geogig.api.porcelain.CloneOp) BranchCreateOp(org.locationtech.geogig.api.porcelain.BranchCreateOp) LogOp(org.locationtech.geogig.api.porcelain.LogOp) ArrayList(java.util.ArrayList) CommitOp(org.locationtech.geogig.api.porcelain.CommitOp) LinkedList(java.util.LinkedList) RevCommit(org.locationtech.geogig.api.RevCommit) Test(org.junit.Test)

Aggregations

MergeReport (org.locationtech.geogig.api.porcelain.MergeOp.MergeReport)21 RevCommit (org.locationtech.geogig.api.RevCommit)19 Test (org.junit.Test)16 Ref (org.locationtech.geogig.api.Ref)14 BranchCreateOp (org.locationtech.geogig.api.porcelain.BranchCreateOp)13 MergeOp (org.locationtech.geogig.api.porcelain.MergeOp)13 RefParse (org.locationtech.geogig.api.plumbing.RefParse)11 ObjectId (org.locationtech.geogig.api.ObjectId)9 LogOp (org.locationtech.geogig.api.porcelain.LogOp)9 NodeRef (org.locationtech.geogig.api.NodeRef)8 UpdateRef (org.locationtech.geogig.api.plumbing.UpdateRef)7 RevTree (org.locationtech.geogig.api.RevTree)6 FindTreeChild (org.locationtech.geogig.api.plumbing.FindTreeChild)6 UpdateSymRef (org.locationtech.geogig.api.plumbing.UpdateSymRef)5 ArrayList (java.util.ArrayList)3 LinkedList (java.util.LinkedList)3 FindCommonAncestor (org.locationtech.geogig.api.plumbing.FindCommonAncestor)3 Optional (com.google.common.base.Optional)2 HashMap (java.util.HashMap)2 RevObject (org.locationtech.geogig.api.RevObject)2