我的回购中有两个分支a = [5 5;
5 5]
和master
。
假设我当前的分支是master.min
。
我的主分支处于提交 - master.min
主分支发生了一些推动 - abcd
,efgh
我存储了我的主分支的当前提交:
ijkl
由于分支之间的切换时间很长,我需要完成 repo.getBranchCommit("master")
.then(function(commit) {
startCommit = commit;
})
所以,我做了一个获取:
master.min
现在,我需要获取在repo.fetch("master");
&之间添加,修改或删除的所有文件的列表。 abcd
ijkl
答案 0 :(得分:2)
我也需要这个,但似乎nodegit还不支持。
看一下https://github.com/nodegit/nodegit/blob/master/lib/commit.js#L196我看到diff是通过比较提交树和父树来计算的:
return thisTree.diffWithOptions(parentTree, options)
所以,我认为这可以通过实现commit#getDiff
的变体来实现,该变体接收另一个提交的OID并调用tree1 = this.getTree()
和tree2 = getTheOtherCommit(OID).getTree()
,然后调用tree1.diffWithOptions(tree2, options)
}。
当然getTheOtherCommit
是伪代码,但它只是想象一下。
我会尽快实施并在此处发布进度。
答案 1 :(得分:0)
对于那些寻求更清晰答案的人:
const nodegit = require('nodegit');
const repo = await nodegit.Repository.open(repoDirectory);
const from = await repo.getCommit(fromCommitSHA);
const fromTree = await from.getTree();
const to = await repo.getCommit(toCommitSHA);
const toTree = await to.getTree();
const diff = await toTree.diff(fromTree);
const patches = await diff.patches();
for (const patch of patches) {
console.log(patch.newFile().path());
}
每个补丁都代表一个已修改的文件,并且是ConvenientPatch
的一个实例。它有两个方法oldFile()
和newFile()
,它们返回DiffFile
的实例,代表修改前后的文件。
NodeGit API文档: