特定のコードベースの変更を一意に識別するには、一般的にどの程度の git sha が必要と考えられますか? 質問する

特定のコードベースの変更を一意に識別するには、一般的にどの程度の git sha が必要と考えられますか? 質問する

たとえば、Git リポジトリのコミットに基づいてディレクトリ名が付けられたディレクトリ構造を構築する場合、そのディレクトリ名を、目が痛くならない程度に短く、衝突する可能性が無視できる程度に長くしたいとします。この場合、一般的に SHA サブ文字列はどの程度必要でしょうか。

この変更を一意に識別したいとします。https://github.com/wycats/handlebars.js/commit/e62999f9ece7d9218b9768a908f8df9c11d7e920

最初の 4 文字だけ使用することもできます。https://github.com/wycats/handlebars.js/commit/e629

しかし、それはリスクがあるような気がします。しかし、数年の間に、たとえば 30,000 の変更があるかもしれないコードベースを想定して、8 文字を使用した場合に衝突が発生する可能性はどれくらいでしょうか? 12 文字でしょうか? このような場合に一般的に許容されると考えられる数字はありますか?

ベストアンサー1

この質問の答えは実際にはPro Git ブックの第 7 章:

一般的に、プロジェクト内で一意性を保つには 8 文字から 10 文字あれば十分です。最大の Git プロジェクトの 1 つである Linux カーネルでは、一意性を保つために、可能な 40 文字のうち 12 文字が必要になり始めています。

7 桁は Git の短い SHA のデフォルトなので、ほとんどのプロジェクトではこれで十分です。カーネル チームは、数十万件のコミットがあるため、前述のように何度か値を増やしています。したがって、約 3 万件のコミットの場合は、8 桁または 10 桁で十分です。

おすすめ記事