给定长 git 提交如何安全地获得短提交
Given long git commit how to safely get short commit
如果我查询 bitbucket api 的提交,我得到长版本:
bitbucket_curl(){
curl -H 'Authorization:Basic YW1JyKg==' "https://api.bitbucket.org$@"
}
commits="$(bitbucket_curl '/2.0/repositories/interos/datavana/commits/alex/dockerize?pagelen=3')"
latest_commit="$(echo "$commits" | jq -r '.values[0].hash')"
给出一个长提交:c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
有没有办法可靠地获取短提交哈希?是不是像最后 10 个字符之类的?或者也许有一种方法可以从 Bitbucket API 请求短散列?关于那个主题,我正在寻找一种可靠的方法来获取分支的最新提交。
我不太了解 Bitbucket API,也不太了解它的端点是否需要完整的 SHA-1 哈希,但据我所知,没有正式的短版提交哈希。唯一的一般要求是使用的哈希片段可以正确解析为单个提交。
Bitbucket 网站似乎只显示 SHA-1 散列的前 7 个字符。大约有 780 亿个长度为 7 的不同哈希值,因此不太可能在单个页面上发生冲突。
git 有一个命令来获取提交哈希的短版本,将完整的提交哈希作为输入。
git rev-parse --short $commit
如果 $commit 是 c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
,这将输出 c56cefb
在this SO answer by mark-longair
中找到了解决方案
如果我查询 bitbucket api 的提交,我得到长版本:
bitbucket_curl(){
curl -H 'Authorization:Basic YW1JyKg==' "https://api.bitbucket.org$@"
}
commits="$(bitbucket_curl '/2.0/repositories/interos/datavana/commits/alex/dockerize?pagelen=3')"
latest_commit="$(echo "$commits" | jq -r '.values[0].hash')"
给出一个长提交:c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
有没有办法可靠地获取短提交哈希?是不是像最后 10 个字符之类的?或者也许有一种方法可以从 Bitbucket API 请求短散列?关于那个主题,我正在寻找一种可靠的方法来获取分支的最新提交。
我不太了解 Bitbucket API,也不太了解它的端点是否需要完整的 SHA-1 哈希,但据我所知,没有正式的短版提交哈希。唯一的一般要求是使用的哈希片段可以正确解析为单个提交。
Bitbucket 网站似乎只显示 SHA-1 散列的前 7 个字符。大约有 780 亿个长度为 7 的不同哈希值,因此不太可能在单个页面上发生冲突。
git 有一个命令来获取提交哈希的短版本,将完整的提交哈希作为输入。
git rev-parse --short $commit
如果 $commit 是 c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
,这将输出 c56cefb
在this SO answer by mark-longair
中找到了解决方案