GitHub API(v3):按创建日期排序标签

Rub*_*nst 11 api github github-api

我在使用GitHub API时遇到了一个问题/疑问.

我需要一个在单个标签之后创建的所有标签的列表.唯一的方法是按日期比较标签.但是,API的结果不按日期排序:

API的结果(rails repository示例):

API结果

来自网络界面的结果:

Web界面结果

我所期待的是按日期排序的列表.但是,正如您在图片中看到的那样:API在v4.0.0发布之前返回v4.0.0rc1和v4.0.0rc2,而4.0.0在发布候选版本之后发布.在服务器端甚至没有订购的创建/提交日期.

版本API也不是解决方案.此API仅返回由Github创建的版本,而不是由标记创建的版本.

有没有办法按日期订购标签?

提前致谢!

鲁本

Iva*_*zak 10

库API目前返回,他们将被"混帐标签"命令,这意味着它们是按字母排序返回的顺序标签.

在Git中按时间顺序排序标记的问题是有两种类型的标记,轻量级和注释,而对于轻量级类型,Git不存储创建日期.

Releases/Release UI当前按照标签指向的提交日期按时间顺序对标签进行排序.这又不是标签本身的创建日期,但它确实按时间顺序建立了事物.

在API中添加此替代排序选项位于我们的功能请求列表中.

  • 不幸的是,到目前为止,REST 调用中还没有可用的排序 (3认同)
  • 这里有新鲜事吗?按日期排序标签会很棒:) (2认同)

Ber*_*tel 5

使用GraphQL API v4,我们现在可以通过field: TAG_COMMIT_DATE内部orderBy. 以下将按提交日期执行升序排序标签:

{
  repository(owner: "rails", name: "rails") {
    refs(refPrefix: "refs/tags/", last: 100, orderBy: {field: TAG_COMMIT_DATE, direction: ASC}) {
      edges {
        node {
          name
          target {
            oid
            ... on Tag {
              message
              commitUrl
              tagger {
                name
                email
                date
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在资源管理器中测试

在这里,tagger里面的字段target只会为带注释的标签填充,对于轻量级标签将为空。

由于date属性 intagger给出了标签的创建日期(仅适用于带注释的标签),因此可以轻松地在客户端按创建日期进行过滤(无需一一检索所有标签)

请注意,此时可用的选项orderBy.fieldTAG_COMMIT_DATE& ALPHABETICAL(no TAG_CREATION_DATE)