【问题标题】:git: is it possible to see remote tags with annotations without cloning?git:是否可以在不克隆的情况下查看带有注释的远程标签?
【发布时间】:2020-11-13 12:40:26
【问题描述】:

我想查看带有注释的远程标签,无需下载任何内容。

我知道我可以看到远程标签,例如git ls-remote --tags origin,但这并没有显示注释。

我也知道我可以看到注释,例如git tag -n,但这需要先获取标签。

有没有办法做到这一点?

【问题讨论】:

  • 没有。 GIt 协议不允许远程获取标签注释。如果存储库托管在支持其他 API 的站点上,您可以使用该 API。例如你可以list "releases" (created for every tag) at Github;结果包括密钥"body"。
  • 谢谢@phd。存储库位于 Azure DevOps 上。我会尝试看看是否有一个 API。

标签: git annotations tags


【解决方案1】:

对于 Azure DevOps,您确实可以使用 API 来:

1/List tags

GET https://dev.azure.com/fabrikam/_apis/git/repositories/{repositoryId}/refs?filter=tags/&api-version=6.0

这将为您提供他们的 objectId

2/对于每个标签对象Id,query the annotated tag itself

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/annotatedtags/{objectId}?api-version=6.0-preview.1

您将获得一个GitAnnotatedTag,其中包括message:标记消息。

【讨论】:

    【解决方案2】:

    嗯,你至少要下载标签注释,对吧?这些在带注释的标签中,您可以非常严格地限制您的 fetch 过滤器。最简单的就是--filter=blob:none,但如果服务器支持它(github 还不支持),你可以用--filter=combine:blob:none+tree:0 真正限制获取流量。

    不管怎样,一个不比 github 迄今为止实现的要求更多的是

    git init `mktemp -d`
    cd $_
    git fetch --filter=tree:0 u://r/l
    git rev-list --tags --no-walk | git cat-file --batch
    

    正如@VonC 指出的那样,任何人都可以在仓库中提供他们想要的任何 Web(或其他传输排序)前端,并为他们想要提供的任何内容提供接口。 Git 不是要为远程数据提供 Web 界面,而是要在本地获取数据,以便您随心所欲地使用它。

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 2022-01-20
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      相关资源
      最近更新 更多