private Optional<NodeRef> parseID(ObjectId commitId, String path, GeoGIG geogig) { Optional<RevObject> object = geogig.command(RevObjectParse.class).setObjectId(commitId).call(); RevCommit commit = null; if (object.isPresent() && object.get() instanceof RevCommit) { commit = (RevCommit) object.get(); } else { throw new CommandSpecException( "Couldn't resolve id: " + commitId.toString() + " to a commit"); } object = geogig.command(RevObjectParse.class).setObjectId(commit.getTreeId()).call(); if (object.isPresent()) { RevTree tree = (RevTree) object.get(); return geogig.command(FindTreeChild.class).setParent(tree).setChildPath(path).call(); } else { throw new CommandSpecException("Couldn't resolve commit's treeId"); } }
public void print(RevCommit commit) throws IOException { StringBuilder sb = new StringBuilder(); sb.append("commit ").append(commit.getId().toString()).append('\n'); sb.append("tree ").append(commit.getTreeId().toString()).append('\n'); sb.append("parent"); for (ObjectId parentId : commit.getParentIds()) { sb.append(' ').append(parentId.toString()); } sb.append('\n'); sb.append("author ").append(format(commit.getAuthor())).append('\n'); sb.append("committer ").append(format(commit.getCommitter())).append('\n'); if (commit.getMessage() != null) { sb.append("message\n"); sb.append("\t" + commit.getMessage().replace("\n", "\n\t")); sb.append('\n'); } if (showChanges) { Iterator<DiffEntry> diff = geogig .command(DiffOp.class) .setOldVersion(commit.parentN(0).or(ObjectId.NULL)) .setNewVersion(commit.getId()) .call(); DiffEntry diffEntry; sb.append("changes\n"); while (diff.hasNext()) { diffEntry = diff.next(); String path = diffEntry.newPath() != null ? diffEntry.newPath() : diffEntry.oldPath(); sb.append('\t') .append(path) .append(' ') .append(diffEntry.oldObjectId().toString()) .append(' ') .append(diffEntry.newObjectId().toString()) .append('\n'); } } console.println(sb.toString()); }