Как отсортировать теги по дате с помощью nodegit?

Как мы можем получить теги из репозитория git и отсортировать их по соответствующей дате фиксации?

Tag.list возвращает только имена, а Tag.lookup нужен OID, так как нам заполнить недостающую часть преобразования имени тега в тег или идентификатор тега?

1 ответ

После прочтения... документации luagit2 (!), Чтобы понять, как работает 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)))
Другие вопросы по тегам