public void addAlteredTree(DiffEntry diff) { ObjectId oldFeatureType = diff.getOldObject() == null ? null : diff.getOldObject().getMetadataId(); ObjectId newFeatureType = diff.getNewObject() == null ? null : diff.getNewObject().getMetadataId(); String path = diff.oldPath() == null ? diff.newPath() : diff.oldPath(); alteredTrees.add(new FeatureTypeDiff(path, oldFeatureType, newFeatureType)); }
/** * @see java.util.concurrent.Callable#call() */ protected WorkingTree _call() { if (path != null) { // check that is a valid path NodeRef.checkValidPath(path); Optional<NodeRef> ref = command(FindTreeChild.class).setParent(workingTree().getTree()) .setChildPath(path).call(); Preconditions.checkArgument(ref.isPresent(), "pathspec '%s' did not match any tree", path); Preconditions.checkArgument(ref.get().getType() == TYPE.TREE, "pathspec '%s' did not resolve to a tree", path); } try (final AutoCloseableIterator<DiffEntry> unstaged = command(DiffWorkTree.class) .setFilter(path).call()) { final Iterator<DiffEntry> added = filter(unstaged, new Predicate<DiffEntry>() { @Override public boolean apply(@Nullable DiffEntry input) { return input.changeType().equals(ChangeType.ADDED); } }); workingTree().delete(transform(added, (de) -> de.newPath()), getProgressListener()); } return workingTree(); }
@Test public void testAddSingleFile() throws Exception { insert(points1); List<DiffEntry> diffs = toList(repo.workingTree().getUnstaged(null)); assertEquals(2, diffs.size()); assertEquals(pointsName, diffs.get(0).newPath()); assertEquals(NodeRef.appendChild(pointsName, idP1), diffs.get(1).newPath()); }
@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); }
while (diffs.hasNext()) { DiffEntry diff = diffs.next(); if (path.equals(diff.newPath())) { if (diff.isAdd()) { String refSpec = commit.getId().toString() + ":" + path;
DiffEntry entry = unstaged.next(); if (entry.changeType() == ChangeType.ADDED) { console.println("Would remove " + entry.newPath());
String name = diffEntry.newPath(); patch.addAddedFeature(name, (RevFeature) revObject, featureType); } else if (revObject instanceof RevTree) {
while (diffs.hasNext()) { DiffEntry diff = diffs.next(); String path = diff.oldPath() == null ? diff.newPath() : diff.oldPath(); Optional<RevObject> obj = command(RevObjectParse.class) .setRefSpec(Ref.HEAD + ":" + path).call();
@Test public void testReportTreesEmptyTreeFromFeatureDeletion() throws Exception { insert(lines1); delete(lines1); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).setOldVersion(ObjectId.NULL) .setNewVersion(Ref.WORK_HEAD).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); assertEquals(linesName, difflist.get(0).newName()); DiffEntry de = difflist.get(0); assertNull(de.getOldObject()); assertNotNull(de.getNewObject()); assertEquals(linesName, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertFalse(de.getNewObject().getMetadataId().isNull()); }
@Test public void testReportTreesEmptyTree() throws Exception { WorkingTree workingTree = geogig.getRepository().workingTree(); workingTree.createTypeTree(linesName, linesType); List<DiffEntry> difflist = toList(diffOp.setReportTrees(true).setOldVersion(ObjectId.NULL) .setNewVersion(Ref.WORK_HEAD).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.getOldObject()); assertNotNull(de.getNewObject()); assertEquals(linesName, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertFalse(de.getNewObject().getMetadataId().isNull()); }
@Test public void testSingleAddition() throws Exception { final ObjectId newOid = insertAndAdd(points1); geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> difflist = toList( diffOp.setOldVersion(ObjectId.NULL).setNewVersion(Ref.HEAD).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.getOldObject()); assertNotNull(de.getNewObject()); String expectedPath = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); assertEquals(expectedPath, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertEquals(newOid, de.newObjectId()); assertFalse(de.getNewObject().getMetadataId().isNull()); }
@Test public void testSingleModification() throws Exception { final ObjectId oldOid = insertAndAdd(points1); final RevCommit insertCommit = geogig.command(CommitOp.class).setAll(true).call(); final ObjectId newOid = insertAndAdd(points1_modified); final RevCommit changeCommit = geogig.command(CommitOp.class).setAll(true).call(); List<DiffEntry> difflist = toList(diffOp.setOldVersion(insertCommit.getId()) .setNewVersion(changeCommit.getId()).call()); assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); String expectedPath = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); assertEquals(expectedPath, de.newPath()); assertEquals(DiffEntry.ChangeType.MODIFIED, de.changeType()); assertEquals(oldOid, de.oldObjectId()); assertEquals(newOid, de.newObjectId()); }
diffEntry = diff.next(); String path = diffEntry.isDelete() ? diffEntry.oldPath() : diffEntry.newPath(); ansi.a("\t" + path).newline();
@Test public void testSingleDeletionReverseOrder() throws Exception { final ObjectId featureContentId = insertAndAdd(points1); final RevCommit addCommit = geogig.command(CommitOp.class).setAll(true).call(); assertTrue(deleteAndAdd(points1)); final RevCommit deleteCommit = geogig.command(CommitOp.class).setAll(true).call(); // set old/new version in reverse order List<DiffEntry> difflist = toList( diffOp.setOldVersion(deleteCommit.getId()).setNewVersion(addCommit.getId()).call()); final String path = NodeRef.appendChild(pointsName, points1.getIdentifier().getID()); // then the diff should report an ADD instead of a DELETE assertNotNull(difflist); assertEquals(1, difflist.size()); DiffEntry de = difflist.get(0); assertNull(de.oldPath()); assertEquals(path, de.newPath()); assertEquals(DiffEntry.ChangeType.ADDED, de.changeType()); assertEquals(ObjectId.NULL, de.oldObjectId()); assertEquals(featureContentId, de.newObjectId()); }