How do I do the equivalent of “git diff --name-status” with jgit?

青春壹個敷衍的年華 提交于 2019-11-30 20:13:53

You can get the tree id for HEAD and the hash by calling:

ObjectId head = repository.resolve("HEAD^{tree}");

and for the revision id:

ObjectId old = repository.resolve(oldHash + "^{tree}");

Once you have the tree ids you can create the tree iterators and get the diffs:

ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldId);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, headId);
List<DiffEntry> diffs= git.diff()
                        .setNewTree(newTreeIter)
                        .setOldTree(oldTreeIter)
                        .call();
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!