.setReportTrees(true).setOldTree(ancestor.get()).setNewTree(commit.getId()) .setPreserveIterationOrder(true).call(); commitDiffs.add(toMergeDiffs);
private void assertChangeTypeFilter(final ObjectId leftTree, final ObjectId rightTree, final int expectedAdds, final int expectedRemoves, final int expectedChanges) { List<DiffEntry> list; diffTree.setOldTree(leftTree).setNewTree(rightTree); diffTree.setChangeTypeFilter(ChangeType.ADDED); list = newArrayList(diffTree.call()); assertEquals(list.toString(), expectedAdds, list.size()); diffTree.setChangeTypeFilter(ChangeType.REMOVED); list = newArrayList(diffTree.call()); assertEquals(list.toString(), expectedRemoves, list.size()); diffTree.setChangeTypeFilter(ChangeType.MODIFIED); list = newArrayList(diffTree.call()); assertEquals(list.toString(), expectedChanges, list.size()); }
.setReportTrees(true).setOldTree(ancestor.get()).setNewTree(commit.getId()) .setPreserveIterationOrder(true).call(); commitDiffs.add(toMergeDiffs);
private void assertChangeTypeFilter(final ObjectId leftTree, final ObjectId rightTree, final int expectedAdds, final int expectedRemoves, final int expectedChanges) { List<DiffEntry> list; diffTree.setOldTree(leftTree).setNewTree(rightTree); diffTree.setChangeTypeFilter(ChangeType.ADDED); list = newArrayList(diffTree.call()); assertEquals(list.toString(), expectedAdds, list.size()); diffTree.setChangeTypeFilter(ChangeType.REMOVED); list = newArrayList(diffTree.call()); assertEquals(list.toString(), expectedRemoves, list.size()); diffTree.setChangeTypeFilter(ChangeType.MODIFIED); list = newArrayList(diffTree.call()); assertEquals(list.toString(), expectedChanges, list.size()); }
/** * Finds differences between the tree pointed to by the given ref and the index. * * @return an iterator to a set of differences between the two trees * @see DiffEntry */ @Override protected AutoCloseableIterator<DiffEntry> _call() { final String oldVersion = Optional.fromNullable(refSpec).or(Ref.HEAD); final Optional<ObjectId> rootTreeId; rootTreeId = command(ResolveTreeish.class).setTreeish(oldVersion).call(); Preconditions.checkArgument(rootTreeId.isPresent(), "refSpec %s did not resolve to a tree", oldVersion); final RevTree rootTree; rootTree = command(RevObjectParse.class).setObjectId(rootTreeId.get()).call(RevTree.class) .get(); final RevTree newTree = stagingArea().getTree(); DiffTree diff = command(DiffTree.class).setPathFilter(this.pathFilters) .setReportTrees(this.reportTrees).setOldTree(rootTree.getId()) .setNewTree(newTree.getId()).setPreserveIterationOrder(preserveIterationOrder) .setMaxDiffs(limit); return diff.call(); }
/** * Finds differences between the tree pointed to by the given ref and the index. * * @return an iterator to a set of differences between the two trees * @see DiffEntry */ @Override protected AutoCloseableIterator<DiffEntry> _call() { final String oldVersion = Optional.fromNullable(refSpec).or(Ref.HEAD); final Optional<ObjectId> rootTreeId; rootTreeId = command(ResolveTreeish.class).setTreeish(oldVersion).call(); Preconditions.checkArgument(rootTreeId.isPresent(), "refSpec %s did not resolve to a tree", oldVersion); final RevTree rootTree; rootTree = command(RevObjectParse.class).setObjectId(rootTreeId.get()).call(RevTree.class) .get(); final RevTree newTree = stagingArea().getTree(); DiffTree diff = command(DiffTree.class).setPathFilter(this.pathFilters) .setReportTrees(this.reportTrees).setOldTree(rootTree.getId()) .setNewTree(newTree.getId()).setPreserveIterationOrder(preserveIterationOrder) .setMaxDiffs(limit); return diff.call(); }
protected @Override List<DiffEntry> _call() { TreeChangesCollector collector = new TreeChangesCollector(); DiffTree diffTree = command(DiffTree.class)// .setPreserveIterationOrder(false)// .setReportFeatures(false)// .setReportTrees(true)// .setPathFilter(this.pathFilters)// .setLeftSource(leftSource)// .setRightSource(rightSource); if (oldTree != null) { diffTree.setOldTree(oldTree); } else if (oldTreeId != null) { diffTree.setOldTree(oldTreeId); } else { diffTree.setOldVersion(oldRefSpec); } if (newTree != null) { diffTree.setNewTree(newTree); } else if (newTreeId != null) { diffTree.setNewTree(newTreeId); } else { diffTree.setNewVersion(newRefSpec); } diffTree.call(collector); List<DiffEntry> res = new ArrayList<>(collector.queue); return res; }
/** * If no {@link #setOldVersion(String) old version} was set, returns the differences between the * working tree and the index, otherwise the differences between the working tree and the * specified revision. * * @return an iterator to a set of differences between the two trees * @see DiffEntry */ @Override protected AutoCloseableIterator<DiffEntry> _call() { final Optional<String> ref = Optional.fromNullable(refSpec); final RevTree oldTree = ref.isPresent() ? getOldTree() : stagingArea().getTree(); final RevTree newTree = workingTree().getTree(); DiffTree diff = command(DiffTree.class).setReportTrees(this.reportTrees) .setOldTree(oldTree.getId()).setNewTree(newTree.getId()).setMaxDiffs(limit) .setPreserveIterationOrder(preserveIterationOrder); if (this.pathFilter != null) { diff.setPathFilter(ImmutableList.of(pathFilter)); } return diff.call(); }
/** * If no {@link #setOldVersion(String) old version} was set, returns the differences between the * working tree and the index, otherwise the differences between the working tree and the * specified revision. * * @return an iterator to a set of differences between the two trees * @see DiffEntry */ @Override protected AutoCloseableIterator<DiffEntry> _call() { final Optional<String> ref = Optional.fromNullable(refSpec); final RevTree oldTree = ref.isPresent() ? getOldTree() : stagingArea().getTree(); final RevTree newTree = workingTree().getTree(); DiffTree diff = command(DiffTree.class).setReportTrees(this.reportTrees) .setOldTree(oldTree.getId()).setNewTree(newTree.getId()).setMaxDiffs(limit) .setPreserveIterationOrder(preserveIterationOrder); if (this.pathFilter != null) { diff.setPathFilter(ImmutableList.of(pathFilter)); } return diff.call(); }
private List<DiffEntry> findWithDiffTreeCommandReportingOnlyTrees(RevTree left, RevTree right) { try (AutoCloseableIterator<DiffEntry> it = repo.command(DiffTree.class)// .setPreserveIterationOrder(false)// .setReportFeatures(false)// .setReportTrees(true)// .setOldTree(left)// .setNewTree(right)// .call()) { return Lists.newArrayList(it); } }
@Override protected MergeScenarioReport _call() { if (consumer == null) { consumer = new MergeScenarioConsumer(); } final Optional<ObjectId> ancestorOpt = command(FindCommonAncestor.class).setLeft(toMerge) .setRight(mergeInto).call(); Preconditions.checkState(ancestorOpt.isPresent(), "No ancestor commit could be found."); final ObjectId ancestor = ancestorOpt.get(); MergeScenarioReport report = null; try (AutoCloseableIterator<DiffEntry> mergeIntoDiffs = command(DiffTree.class) .setOldTree(ancestor).setReportTrees(true).setNewTree(mergeInto.getId()) .setPreserveIterationOrder(true).call(); AutoCloseableIterator<DiffEntry> toMergeDiffs = command(DiffTree.class) .setOldTree(ancestor).setReportTrees(true).setNewTree(toMerge.getId()) .setPreserveIterationOrder(true).call();) { Iterator<MergeDiffRef> tupleIterator = new MergeDiffIterator(mergeIntoDiffs, toMergeDiffs); final RevCommit ancestorCommit = objectDatabase().getCommit(ancestor); final RevTree ancestorTree = objectDatabase().getTree(ancestorCommit.getTreeId()); report = process(tupleIterator, ancestorTree); } return report; }
@Override protected MergeScenarioReport _call() { if (consumer == null) { consumer = new MergeScenarioConsumer(); } final Optional<ObjectId> ancestorOpt = command(FindCommonAncestor.class).setLeft(toMerge) .setRight(mergeInto).call(); Preconditions.checkState(ancestorOpt.isPresent(), "No ancestor commit could be found."); final ObjectId ancestor = ancestorOpt.get(); MergeScenarioReport report = null; try (AutoCloseableIterator<DiffEntry> mergeIntoDiffs = command(DiffTree.class) .setOldTree(ancestor).setReportTrees(true).setNewTree(mergeInto.getId()) .setPreserveIterationOrder(true).call(); AutoCloseableIterator<DiffEntry> toMergeDiffs = command(DiffTree.class) .setOldTree(ancestor).setReportTrees(true).setNewTree(toMerge.getId()) .setPreserveIterationOrder(true).call();) { Iterator<MergeDiffRef> tupleIterator = new MergeDiffIterator(mergeIntoDiffs, toMergeDiffs); final RevCommit ancestorCommit = objectDatabase().getCommit(ancestor); final RevTree ancestorTree = objectDatabase().getTree(ancestorCommit.getTreeId()); report = process(tupleIterator, ancestorTree); } return report; }
@Test public void testTreePathFiltering() { ObjectDatabase db = geogig.getContext().objectDatabase(); RevTree tree1 = tree(100, db); RevTree tree2 = tree(50, db); RevTree root = createRoot(db, tree1, tree2); List<String> pathFilters = ImmutableList.of("tree1"); diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()).setPathFilter(pathFilters); List<DiffEntry> diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(tree1.size(), diffs.size()); pathFilters = ImmutableList.of("tree2"); diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()).setPathFilter(pathFilters); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(tree2.size(), diffs.size()); pathFilters = ImmutableList.of("tree1/1", "tree1/2", "tree1/3", "tree1/4", "tree2/2", "tree2/3", "tree2/10"); diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()).setPathFilter(pathFilters); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(pathFilters.size(), diffs.size()); }
@Test public void testTreePathFiltering() { ObjectDatabase db = geogig.getContext().objectDatabase(); RevTree tree1 = tree(100, db); RevTree tree2 = tree(50, db); RevTree root = createRoot(db, tree1, tree2); List<String> pathFilters = ImmutableList.of("tree1"); diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()).setPathFilter(pathFilters); List<DiffEntry> diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(tree1.size(), diffs.size()); pathFilters = ImmutableList.of("tree2"); diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()).setPathFilter(pathFilters); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(tree2.size(), diffs.size()); pathFilters = ImmutableList.of("tree1/1", "tree1/2", "tree1/3", "tree1/4", "tree2/2", "tree2/3", "tree2/10"); diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()).setPathFilter(pathFilters); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(pathFilters.size(), diffs.size()); }
@Test public void testNullTrees() { try (AutoCloseableIterator<DiffEntry> diffs = diffTree.setOldTree(ObjectId.NULL) .setNewTree(ObjectId.NULL).call()) { assertFalse(diffs.hasNext()); } }
@Test public void testNullTrees() { try (AutoCloseableIterator<DiffEntry> diffs = diffTree.setOldTree(ObjectId.NULL) .setNewTree(ObjectId.NULL).call()) { assertFalse(diffs.hasNext()); } }
@Test public void testBoundsFiltering() { ObjectDatabase db = geogig.getContext().objectDatabase(); RevTree tree1 = tree(1000, db); RevTree tree2 = tree(50, db); RevTree root = createRoot(db, tree1, tree2); CoordinateReferenceSystem crs = revtype.type().getCoordinateReferenceSystem(); ReferencedEnvelope filter; List<DiffEntry> diffs; diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()); filter = new ReferencedEnvelope(50, 51, 50, 51, crs); diffTree.setBoundsFilter(filter); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(2, diffs.size()); }
@Test public void testBoundsFilteringReprojecting() throws Exception { ObjectDatabase db = geogig.getContext().objectDatabase(); RevTree tree1 = tree(1000, db); RevTree tree2 = tree(50, db); RevTree root = createRoot(db, tree1, tree2); CoordinateReferenceSystem nativeCrs = revtype.type().getCoordinateReferenceSystem(); CoordinateReferenceSystem queryCrs = CRS.decode("EPSG:4326", true); ReferencedEnvelope nativeFilter = new ReferencedEnvelope(49.9, 51.1, 49.9, 51.1, nativeCrs); ReferencedEnvelope queryFilter = nativeFilter.transform(queryCrs, true); List<DiffEntry> diffs; diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()); diffTree.setBoundsFilter(queryFilter); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(2, diffs.size()); }
@Test public void testBoundsFilteringReprojecting() throws Exception { ObjectDatabase db = geogig.getContext().objectDatabase(); RevTree tree1 = tree(1000, db); RevTree tree2 = tree(50, db); RevTree root = createRoot(db, tree1, tree2); CoordinateReferenceSystem nativeCrs = revtype.type().getCoordinateReferenceSystem(); CoordinateReferenceSystem queryCrs = CRS.decode("EPSG:4326", true); ReferencedEnvelope nativeFilter = new ReferencedEnvelope(49.9, 51.1, 49.9, 51.1, nativeCrs); ReferencedEnvelope queryFilter = nativeFilter.transform(queryCrs, true); List<DiffEntry> diffs; diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()); diffTree.setBoundsFilter(queryFilter); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(2, diffs.size()); }
@Test public void testBoundsFiltering() { ObjectDatabase db = geogig.getContext().objectDatabase(); RevTree tree1 = tree(1000, db); RevTree tree2 = tree(50, db); RevTree root = createRoot(db, tree1, tree2); CoordinateReferenceSystem crs = revtype.type().getCoordinateReferenceSystem(); ReferencedEnvelope filter; List<DiffEntry> diffs; diffTree.setOldTree(ObjectId.NULL).setNewTree(root.getId()); filter = new ReferencedEnvelope(50, 51, 50, 51, crs); diffTree.setBoundsFilter(filter); diffs = ImmutableList.copyOf(diffTree.call()); assertEquals(2, diffs.size()); }