如何使用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

回到顶部