@Override public AutoCloseableIterator<DiffEntry> iterator() { return call(); }
@Override protected FilteredDiffIterator getFilteredChanges(final Repository local, RevCommit commit) { ObjectId parent = ObjectId.NULL; if (commit.getParentIds().size() > 0) { parent = commit.getParentIds().get(0); } AutoCloseableIterator<DiffEntry> changes = remoteRepo.command(DiffOp.class) .setNewVersion(commit.getId()).setOldVersion(parent).setReportTrees(true).call(); Optional<RepositoryFilter> filter = RepositoryImpl.getFilter(local); checkState(filter.isPresent(), "No filter found for sparse clone."); return new LocalFilteredDiffIterator(changes, remoteRepo, local, filter.get()); }
@Override protected FilteredDiffIterator getFilteredChanges(final Repository local, RevCommit commit) { ObjectId parent = ObjectId.NULL; if (commit.getParentIds().size() > 0) { parent = commit.getParentIds().get(0); } AutoCloseableIterator<DiffEntry> changes = remoteRepo.command(DiffOp.class) .setNewVersion(commit.getId()).setOldVersion(parent).setReportTrees(true).call(); Optional<RepositoryFilter> filter = RepositoryImpl.getFilter(local); checkState(filter.isPresent(), "No filter found for sparse clone."); return new LocalFilteredDiffIterator(changes, remoteRepo, local, filter.get()); }
@Test public void testReportTrees() throws Exception { insert(points1); insert(lines1); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).setOldVersion(ObjectId.NULL) .setNewVersion(Ref.WORK_HEAD).call()); assertNotNull(difflist); assertEquals(4, difflist.size()); Set<String> expected = ImmutableSet.of(linesName, pointsName, NodeRef.appendChild(linesName, idL1), NodeRef.appendChild(pointsName, idP1)); Set<String> actual = Sets.newHashSet(Collections2.transform(difflist, (e) -> e.newPath())); assertEquals(expected, actual); }
@Test public void testReportTrees() throws Exception { insert(points1); insert(lines1); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).setOldVersion(ObjectId.NULL) .setNewVersion(Ref.WORK_HEAD).call()); assertNotNull(difflist); assertEquals(4, difflist.size()); Set<String> expected = ImmutableSet.of(linesName, pointsName, NodeRef.appendChild(linesName, idL1), NodeRef.appendChild(pointsName, idP1)); Set<String> actual = Sets.newHashSet(Collections2.transform(difflist, (e) -> e.newPath())); assertEquals(expected, actual); }
@Test public void testTreeModifiedByAddingExtraFeature() throws Exception { insertAndAdd(points1, points2); insert(points3); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).call()); assertNotNull(difflist); assertEquals(2, difflist.size()); assertEquals(ChangeType.MODIFIED, difflist.get(0).changeType()); assertEquals(TYPE.TREE, difflist.get(0).getOldObject().getType()); assertEquals(ChangeType.ADDED, difflist.get(1).changeType()); assertEquals(TYPE.FEATURE, difflist.get(1).getNewObject().getType()); }
@Test public void testCreatePatchAddNewFeatureToEmptyRepo() throws Exception { insert(points1); DiffOp op = geogig.command(DiffOp.class); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAddedFeatures().size()); } }
@Test public void testCreatePatchAddNewFeatureToEmptyRepo() throws Exception { insert(points1); DiffOp op = geogig.command(DiffOp.class); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAddedFeatures().size()); } }
@Test public void testEmptyRepo() throws Exception { try (AutoCloseableIterator<DiffEntry> difflist = diffOp .setOldVersion(ObjectId.NULL.toString()).call()) { assertNotNull(difflist); assertFalse(difflist.hasNext()); } }
@Test public void testTreeModifiedByAddingExtraFeature() throws Exception { insertAndAdd(points1, points2); insert(points3); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).call()); assertNotNull(difflist); assertEquals(2, difflist.size()); assertEquals(ChangeType.MODIFIED, difflist.get(0).changeType()); assertEquals(TYPE.TREE, difflist.get(0).getOldObject().getType()); assertEquals(ChangeType.ADDED, difflist.get(1).changeType()); assertEquals(TYPE.FEATURE, difflist.get(1).getNewObject().getType()); }
@Test public void testEmptyRepo() throws Exception { try (AutoCloseableIterator<DiffEntry> difflist = diffOp .setOldVersion(ObjectId.NULL.toString()).call()) { assertNotNull(difflist); assertFalse(difflist.hasNext()); } }
@Test public void testChangedFeatureType() throws Exception { insertAndAdd(points1, points2); geogig.getRepository().workingTree().updateTypeTree(pointsName, modifiedPointsType); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); }
@Test public void testChangedFeatureType() throws Exception { insertAndAdd(points1, points2); geogig.getRepository().workingTree().updateTypeTree(pointsName, modifiedPointsType); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); }
@Test public void testCreatePatchAddNewEmptyPath() throws Exception { insert(points1); delete(points1); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { // ArrayList<DiffEntry> list = Lists.newArrayList(diffs); Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); } }
@Test public void testCreatePatchAddNewEmptyPath() throws Exception { insert(points1); delete(points1); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { // ArrayList<DiffEntry> list = Lists.newArrayList(diffs); Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); } }
@Test public void testCreatePatchWithNoChanges() throws Exception { insertAndAdd(points1, points2); geogig.command(CommitOp.class).setAll(true).call(); try (AutoCloseableIterator<DiffEntry> diffs = geogig.command(DiffOp.class).call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(0, patch.count()); } }
@Test public void testCreatePatchWithNoChanges() throws Exception { insertAndAdd(points1, points2); geogig.command(CommitOp.class).setAll(true).call(); try (AutoCloseableIterator<DiffEntry> diffs = geogig.command(DiffOp.class).call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(0, patch.count()); } }
@Test public void testNoChangeSameCommit() throws Exception { insertAndAdd(points1); final RevCommit commit = geogig.command(CommitOp.class).setAll(true).call(); assertFalse(diffOp.setOldVersion(commit.getId().toString()) .setNewVersion(commit.getId().toString()).call().hasNext()); }
@Test public void testNoChangeSameCommit() throws Exception { insertAndAdd(points1); final RevCommit commit = geogig.command(CommitOp.class).setAll(true).call(); assertFalse(diffOp.setOldVersion(commit.getId().toString()) .setNewVersion(commit.getId().toString()).call().hasNext()); }
@Test public void testFilterNamespaceNoChanges() throws Exception { // two commits on different trees insertAndAdd(points1); final RevCommit commit1 = geogig.command(CommitOp.class).setAll(true).call(); insertAndAdd(lines1); final RevCommit commit2 = geogig.command(CommitOp.class).setAll(true).call(); diffOp.setOldVersion(commit1.getId()).setNewVersion(commit2.getId()); diffOp.setFilter(pointsName); try (AutoCloseableIterator<DiffEntry> diffs = diffOp.call()) { assertFalse(diffs.hasNext()); } }