显示提交中更改的所有文件

时间:2016-10-31 09:47:35

标签: git jgit

我是JGit的新手,我正在搜索这个Git命令的实现:

git show --stat < sha >

(它向我显示提交中所有受影响的文件。)

我有RevCommit,但如何获取git show显示的信息?

1 个答案:

答案 0 :(得分:0)

要列出构成提交的文件,您需要使用TreeWalk。可以使用树的对象ID(SHA-1)初始化TreeWalk,然后使用它遍历其条目。

例如:

TreeWalk treeWalk = new TreeWalk( repository );
treeWalk.setRecursive( true );
treeWalk.reset( commit.getId() );
while( treeWalk.next() ) {
  String path = treeWalk.getPathString();
  String blobId = treeWalk.getObjectId( 0 );
  // ...
}

getPathString()返回当前条目的(存储库相对)路径。

getObjectId()需要一个索引来标识应该获取对象id的树迭代器。这里,第一个也是唯一一个树迭代器被指定为reset()为给定提交的树隐式创建的内容。