我想获取修订版XXXXXX和HEAD之间已更改/添加/删除文件的列表.这是我到目前为止:
String oldHash = "a97e5553e37a25bd1a3c99eab303145baed08dbd";
Git git = Git.open(new File("/tmp/jgit"));
Repository repository = git.getRepository();
ObjectId old = repository.resolve(oldHash);
ObjectId head = repository.resolve("HEAD");
// how do i get the trees from the obj. id?
List<<DiffEntry> diffs = git.diff().setNewTree(null).setOldTree(null).call();
for(DiffEntry diff : diffs) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法,如果是这样,我如何获得git.diff()所需的树?
您可以通过调用获取HEAD和散列的树ID:
ObjectId head = repository.resolve("HEAD^{tree}");
Run Code Online (Sandbox Code Playgroud)
并为修订版ID:
ObjectId old = repository.resolve(oldHash + "^{tree}");
Run Code Online (Sandbox Code Playgroud)
获得树ID后,您可以创建树迭代器并获取差异:
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2749 次 |
| 最近记录: |