Nodegit – 在两个提交之间获得差异
我有两个分支master
和master.min
在我的回购。
假设我的当前分支是master.min
。
我的主分支在提交 – abcd
一些推动发生在主分支 – efgh
, ijkl
我存储了我的主分支的当前提交:
repo.getBranchCommit("master") .then(function(commit) { startCommit = commit; })
由于分支机构之间的切换时间很长,我需要在master.min
上执行所有的操作
所以,我做了一个提取:
repo.fetch("master");
现在,我需要获取在abcd
& ijkl
之间添加,修改或删除的所有文件的列表
commit.getDiff() is not enough. I need diff between two commits.
我也需要这个,但似乎还不支持nodegit。
看看https://github.com/nodegit/nodegit/blob/master/lib/commit.js#L196我看到差异是通过比较提交树和父树来计算的:
return thisTree.diffWithOptions(parentTree, options)
所以,我认为这可以通过实现commit#getDiff
的变体来实现,它接收另一个提交的OID并调用tree1 = this.getTree()
和tree2 = getTheOtherCommit(OID).getTree()
,然后调用tree1.diffWithOptions(tree2, options)
。
getTheOtherCommit
当然是伪代码,但它只是为了描绘这个想法。
只要我能,我会尽力实施它,并在这里发表进展。