2016-01-06 1 views
2

У меня есть две ветки master и master.min в моем репо.Nodegit - получить разницу между двумя коммитами

Предположим, что моя текущая ветка 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. 

ответ

0

Мне нужно это слишком , но, похоже, пока не поддерживается 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 является псевдокодом, но это просто для того, чтобы представить идею.

Как только я смогу, я попытаюсь реализовать его и опубликовать здесь прогресс.

+1

В конце концов я использовал git-обещание для команды git, чтобы получить diff. Таким образом, мой код использует nodegit, а также git –

 Смежные вопросы

  • Нет связанных вопросов^_^