如何使用JGit获取提交的文件列表
我一直在研究将要集成Git功能的基于Java的产品。使用Git的功能之一,我通过分阶段执行将10多个文件添加到Git存储库中,然后在一次提交中提交了这些文件。
以上过程可能相反吗?即查找作为提交的一部分提交的文件列表。
我在git.log()
命令的帮助下获得了提交,但是我不确定如何获取提交的文件列表。
示例代码:
Git git = (...);Iterable<RevCommit> logs = git.log().call();
for(RevCommit commit : logs) {
String commitID = commit.getName();
if(commitID != null && !commitID.isEmpty()) {
TableItem item = new TableItem(table, SWT.None);
item.setText(commitID);
// Here I want to get the file list for the commit object
}
}
回答:
每个提交都指向一 棵树 ,该 树 表示构成该提交的所有文件。注意,这不仅包括使用此特定提交添加,修改或删除的文件,还包括此修订版中包含的所有文件。
如果将提交表示为a RevCommit
,则可以通过以下方式获取树的ID:
ObjectId treeId = commit.getTree();
如果提交ID来自另一个来源,则需要首先对其进行解析以获取关联的树ID。例如,请参见此处:如何使用JGit从SHA1
ID字符串获取RevCommit或ObjectId?
为了遍历树,请使用TreeWalk
:
try (TreeWalk treeWalk = new TreeWalk(repository)) { treeWalk.reset(treeId);
while (treeWalk.next()) {
String path = treeWalk.getPathString();
// ...
}
}
如果您只对通过特定提交记录的更改感兴趣,请参见此处:使用JGit创建差异
以上是 如何使用JGit获取提交的文件列表 的全部内容, 来源链接: utcz.com/qa/432551.html