社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

github标记和发布资产url列表

John • 5 年前 • 1692 次点击  

我正在努力使用github graphql接口来获取所需的数据。我想得到一个标签和版本的资产url列表。似乎有些回购产生了我想要的结果,而另一些则什么也没有产生。

query {
 repository(owner:"erlang",name:"otp") {
    releases(last:100) {
      edges {
        node {
          url
          releaseAssets(last:100) {
            edges {
              node {
                downloadUrl
              }
            }
          }
          tag {
            name
            target {
              ... on Commit {
                zipballUrl
                tarballUrl
              }
            }
          }
        }
      }
    }
    tags:refs(refPrefix:"refs/tags/", last:30) {
      edges {
        tag:node {
          name
          target {
            sha:oid
            commitResourcePath
            ... on Commit {
              zipballUrl
              tarballUrl
              author {
                name
                email
                date
              }
            }
          }
        }
      }
    }
  }
}

该查询按原样生成我想要的结果(或者至少是一些结果),而所有者:“spring projects”,名称:“spring framework”生成没有tarball的标记。当我查看spring框架回购时,它显然有可供发布的资产。

为什么它们不显示在这个查询中?当我查看git时,每个版本和标记都有资产,即使在我的查询中,结果也是命中或未命中。我错过了什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40507
 
1692 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Bertrand Martel
Reply   •   1 楼
Bertrand Martel    6 年前

目标是 git reference ,在这种情况下,它可以指向 Tag 或A Commit 对象。当它指向 提交 ,查询返回预期结果,因为 ...on Commit 不是空的。得到 标签 也可以试试 ...on Tag 提取标记符或它指向的提交,具体取决于您想要什么。下面是一个例子:

{
  repository(owner: "spring-projects", name: "spring-framework") {
    releases(last: 100) {
      edges {
        node {
          url
          releaseAssets(last: 100) {
            edges {
              node {
                downloadUrl
              }
            }
          }
          tag {
            ...refInfo
          }
        }
      }
    }
    tags: refs(refPrefix: "refs/tags/", last: 30) {
      edges {
        node {
          ...refInfo
        }
      }
    }
  }
}

fragment refInfo on Ref {
  name
  target {
    sha: oid
    commitResourcePath
    __typename
    ... on Tag {
      target {
        ... on Commit {
          ...commitInfo
        }
      }
      tagger {
        name
        email
        date
      }
    }
    ... on Commit {
      ...commitInfo
    }
  }
}

fragment commitInfo on Commit {
  zipballUrl
  tarballUrl
  author {
    name
    email
    date
  }
}

Try it in the explorer

注意在上面的例子中,我使用了 fragments 减小查询大小并提高可读性

我猜如果裁判指的是 标签 对象是 annotated tag 它可以保存一条消息、一个特定的标记日期和标记信息。如果它指向 提交 对象,它是 lightweight tag 只是链接到一个提交