Nodegit – 在两个提交之间获得差异

我有两个分支mastermaster.min在我的回购。

假设我的当前分支是master.min

我的主分支在提交 – abcd

一些推动发生在主分支 – efghijkl

我存储了我的主分支的当前提交:

  repo.getBranchCommit("master") .then(function(commit) { startCommit = commit; }) 

由于分支机构之间的切换时间很长,我需要在master.min上执行所有的操作

所以,我做了一个提取:

 repo.fetch("master"); 

现在,我需要获取在abcdijkl之间添加,修改或删除的所有文件的列表

 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当然是伪代码,但它只是为了描绘这个想法。

只要我能,我会尽力实施它,并在这里发表进展。