【问题标题】:Github GraphQl - How to get a list of commits between tagsGithub GraphQl - 如何获取标签之间的提交列表
【发布时间】:2019-10-17 11:35:39
【问题描述】:

我想通过 Github GraphQL 回答这个问题:

在版本/标签之间,哪些提交已合并到主控中?

如果我要在命令行上执行,结果应该与此问题 Get commit list between tags in Git 的结果相似。

我正在使用开发者资源管理器,想知道我是否能够通过单个查询来完成此操作,或者是否需要多个查询。我尝试了以下方法,但它没有给我未标记的标签之间的提交,只是标记的提交。

{
  repository(owner: "CoolCompany", name: "awesome-new-ui") {
    refs(refPrefix: "refs/tags/", first: 2, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
      edges {
        node {
          id
          name
          target {
            oid
            ... on Commit {
              author {
                date
                email
                name
              }
              message
            }
          }
        }
      }
    }
  }
}

【问题讨论】:

  • 这可能无法通过 GraphQL 实现,但在 v3 中它很简单:https://api.github.com/repos/CoolCompany/awesome-new-ui/compare/A...B 其中AB 是任何 git 参考

标签: graphql github-api github-graphql


【解决方案1】:

来自 Github GraphQL 社区的@lee-dohm 帮助我找到了一个解决方案,并发布在here

我也可以在这里粘贴我的解决方案。似乎这个问题不能用单个查询来解决,但可以用 2 个相互配合的查询来解决:

第 1 步:获取最新的发布信息。你也可以为标签修改这个。

{
  repository(owner: "CoolCompany", name: "awesome-ui") {
    releases(last: 1) {
      edges{
        node{
          tagName
          createdAt
        }
      }
    }
  }
}

第 2 步:使用 createdAt 中的值(与发布或标签相关联)并执行以下操作:

{
  repository(owner: "CoolCompany", name: "awesome-ui") {
    nameWithOwner
    object(expression: "master") {
      ... on Commit {
        oid
        history(first: 100, since: "$createdAtDate") {
          nodes {
            oid
            messageHeadline
            author {
              user {
                login
              }
            }
            committedDate
          }
        }
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 2011-08-17
    • 2018-06-25
    • 2021-01-19
    • 2015-01-31
    • 1970-01-01
    • 2022-08-19
    • 2017-03-10
    • 1970-01-01
    相关资源
    最近更新 更多