我在 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 似乎不支持通过其哈希值下载版本。或者我错过了什么?
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}
您可以在那里找到更多信息。例如下载发布。