1

如何使用 nodegit 获取两个标签之间的差异?

在命令行上,我可以看到两个标签之间的差异,没问题

此外,我可以使用 nodegit 列出我的 repo 中的标签:

const Git = require('nodegit')
const path = require('path')

Git.Repository.open(path.resolve(__dirname, '.git'))
.then((repo) => {
  console.log('Opened repo ...')
  Git.Tag.list(repo).then((array) => {
    console.log('Tags:')
    console.log(array)
  })
})

但是,我不确定如何在 nodegit 中找到两个标签之间的差异。

我试过了,但该部分没有打印任何Diff内容:

const Git = require('nodegit')
const path = require('path')

Git.Repository.open(path.resolve(__dirname, '.git'))
.then((repo) => {
  console.log('Opened repo ...')
  Git.Tag.list(repo).then((array) => {
    console.log('Tags:')
    console.log(array)
    Git.Diff(array[0], array[1]).then((r) =>  {
      console.log('r', r)
    })
  })
})
4

1 回答 1

2

以下是查看最后两个标签的提交数据的方法:

nodegit.Repository.open(path.resolve(__dirname, '.git'))
  .then(repo => (
    nodegit.Tag.list(repo).then(tags => {
      return [
        tags[ tags.length - 1 ],
        tags[ tags.length - 2 ],
      ]
    })
    .then(tags => {
      console.log(tags)
      tags.forEach(t => {
        nodegit.Reference.lookup(repo, `refs/tags/${t}`)
        .then(ref => ref.peel(nodegit.Object.TYPE.COMMIT))
        .then(ref => nodegit.Commit.lookup(repo, ref.id()))
        .then(commit => ({
           tag: t,
           hash: commit.sha(),
           date: commit.date().toJSON(),
         }))
         .then(data => {
           console.log(data)
         })
      })
    })
  ))
于 2018-01-22T22:10:21.337 回答