【问题标题】:Given long git commit how to safely get short commit给定长 git commit 如何安全地获得短提交
【发布时间】:2019-05-29 23:47:30
【问题描述】:

如果我查询 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 请求短哈希?在这个主题上,我正在寻找一种可靠的方法来获取分支的最新提交。

【问题讨论】:

  • 没有可靠的方法。 按照惯例它是 7 个字符用于小型项目,8 个用于大型项目,10 个用于大型项目。 几乎总是拿前 10 个肯定是安全的。
  • 今天有效的短哈希可能明天就无效了。只要坚持长的。

标签: git bitbucket git-commit git-hash


【解决方案1】:

我不太了解 Bitbucket API,以及它的端点是否需要完整的 SHA-1 哈希,但据我所知,没有官方的简短版本的提交哈希。唯一的一般要求是使用的散列片段可以正确解析为单个提交。

Bitbucket 网络似乎只显示 SHA-1 哈希的前 7 个字符。大约有 780 亿个长度为 7 的不同哈希,因此在单个页面上不太可能发生冲突。

【讨论】:

  • 听起来最好坚持使用长散列,因为有一天您可能想要普遍唯一的散列,而不仅仅是一个 repo 的唯一。
猜你喜欢
  • 1970-01-01
  • 2015-10-09
  • 2021-05-12
  • 2019-08-16
  • 2014-04-02
  • 2014-03-11
  • 1970-01-01
  • 2021-12-11
  • 2018-11-27
相关资源
最近更新 更多