如何使用nodegit按日期对标签进行排序?

时间:2017-06-29 18:31:16

标签: javascript nodegit

我们如何从git存储库中获取标记并按相关提交日期对它们进行排序?

Tag.list只返回名称,而Tag.lookup需要一个OID,那么我们如何填写将标签名称转换为标签或标签ID的缺失部分?

1 个答案:

答案 0 :(得分:0)

在阅读了... luagit2 docs(!)以实际了解libgit如何工作之后,这是一个解决方案:

nodegit.Repository.open(repoPath).then(repo =>
  nodegit.Tag.list(repo)
  .then(list =>
    Promise.all(
      list.map(tagName =>
        nodegit.Reference.lookup(repo, `refs/tags/${tagName}`)
        .then(ref => nodegit.Commit.lookup(repo, ref.target()))
        .then(commit => ({
          tag: tagName,
          date: commit.date().toJSON(),
        }))
      )
    )
  )
  .then(tags => tags.sort((a, b) => (a.date < b.date ? -1 : 1)))