Artifactory:如何下载由哈希而不是标签指定的git版本

问题描述 投票:0回答:1

我在 Artifactory 中为 GitHub 设置了一个 VCS 镜像。如何下载由其哈希值指定的存储库版本?

我可以使用 Artifactory 的 REST API 轻松下载分支的头部

curl -i -uuser:passw -XGET <artifactoryUrl>/api/vcs/downloadBranch/<repoKey>/openembedded/meta-openembedded/sumo

但是当我想下载特定参考时

curl -i -uuser:passw -XGET <artifactoryUrl>/api/vcs/downloadBranch/<repoKey>/openembedded/meta-openembedded/aa9b1f50f424a8baee65c95a09fbb7d57c5801c8

我收到以下错误

HTTP/1.1 404 Not Found  
Server: Artifactory/6.7.0  
X-Artifactory-Id: 037e72e716a230b6:-414777d3:16a498a8219:-8000  
Content-Type: application/json  
Transfer-Encoding: chunked  
Date: Wed, 24 Apr 2019 06:50:01 GMT  
{  
  "errors" : [ {  
    "status" : 404,  
    "message" : "Unable to find ref name 'aa9b1f50f424a8baee65c95a09fbb7d57c5801c8'"  
  } ]

我也尝试过以下方法,但没有成功

curl -i -uuser:passw -XGET <artifactoryUrl>/api/vcs/downloadTag/<repoKey>/openembedded/meta-openembedded/aa9b1f50f424a8baee65c95a09fbb7d57c5801c8

Artifactory 似乎不支持通过其哈希值下载版本。或者我错过了什么?

git artifactory
1个回答
1
投票

解决方案更新 [10 月 12 日] 2023]:

JFrog 添加了 vcsDownloadCommit!

您现在可以直接通过哈希下载提交。

/api/vcs/downloadCommit/github-remote/openembedded/meta-openembedded/8d6bbd050da66ad0e103c246b037c19789299dbe?ext=tar.gz

https://jfrog.com/help/r/jfrog-rest-apis/download-a-vcs-commit

或者,这也应该根据您的远程配置起作用:

artifactory-url/[remote-repository]/openembedded/meta-openembedded/archive/c66ec8776ec6f467937918a114bdefa28ac036a9.zip

更新[旧]:

有趣的是,您可以通过引用下载,但前提是引用指向分支或标签。 含义:

/api/vcs/downloadBranch/github-remote/openembedded/meta-openembedded/8d6bbd050da66ad0e103c246b037c19789299dbe?ext=tar.gz

有效,因为哈希实际上指向一个有效的分支。 标签也一样。 如果 Ref Hash 指向有效标签,您可以使用 Ref Hash 代替名称。

我无法理解为什么此时无法下载特定参考。因为结构实际上是相同的。

  • 按分支的档案是从
    github.com/user/repo/archive/refs/heads/{branchname}
  • 拉取的
  • 按标签分类的档案来自
    github.com/user/repo/archive/refs/tags/{tagname}
  • 参考哈希的档案是从
    github.com/user/repo/archive/refs/{hash}
  • 中提取的

所以通过哈希拉取应该非常简单。但显然不是。

原文:

API 允许下载标签。我找不到下载特定参考的方法,但标签通常是可行的方法。

如果适用,您可以通过致电下载特定标签:

/api/vcs/downloadTag/{artifactory-repository}/{username/org}/{repository}/{tagname e.g. v1.2.3}?ext={tar.gz or zip}

将包括括号 {} 在内的所有内容替换为您指定的目标

对你来说意味着(如果他们实际上有任何标签,但他们没有):

/api/vcs/downloadTag/{artifactory-repository}/openembedded/meta-openembedded/{tagname e.g. v1.2.3}?ext={tar.gz or zip}

来源:下载 VCS-Tag - JFROG DOC

您可以在那里找到更多信息。例如下载发布。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.