簡體   English   中英

使用JGit獲取后獲取已更改文件的列表

[英]Get the list of changed files after a pull with JGit

我想知道如何在拉取請求后檢索已更改文件的列表。

我正在使用它來獲取所有合並的提交,但我想知道所有已更改的文件。

Git git = new Git(localRepo);
PullCommand pullCmd = git.pull();
PullResult pullResult = pullCmd.call();
MergeResult mergeResult = pullResult.getMergeResult();
ObjectId[] mergedCommits = mergeResult.getMergedCommits();

for (ObjectId mergedCommit : mergedCommits) {
  // And now?
}

在之前的評論/問題的基礎上:

拉動之前獲取當前頭部:

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

並再次拉

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

然后你應該能夠以與我如何使用jgit相同的“git diff --name-status”相同的方式運行diff

ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, head);
List<DiffEntry> diffs= git.diff()
                    .setNewTree(newTreeIter)
                    .setOldTree(oldTreeIter)
                    .call();


$git diff-tree --no-renames --no-commit-id --name-only -r

我的方法對我有用:
1.將所有哈希值轉換為文件(說tempfile1)
2. xargs -n1 git diff-tree --no-renames --no-commit-id --name-only -r <tempfile1 >> tempfile2
3. sort tempfile2 | uniq >> final(刪除重復的條目)

最終文件將包含所有已更改的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM