5

git がツリー オブジェクトを格納する方法の正確な形式を理解しようとしています。ツリー オブジェクトのハッシュはどのように計算されますか?

4

2 に答える 2

9

ツリー オブジェクト

'tree' ' ' size_decimal '\0' tree_content

tree_content の各エントリ

mode ' ' filename '\0' hash_20_bin

モード: 通常のファイルの場合は 100644、実行可能ファイルの場合は 100755。040000: ツリー; 120000: シンボリックリンク; 160000: gitlink

http://linquize.blogspot.hk/2011/10/supplemental-information-for-git.html

于 2012-09-04T04:05:48.017 に答える
6

ツリー オブジェクトは、エントリのリストを含むバイナリ オブジェクト (実際のファイルと区別される "ツリー" 型) として内部的に保存されます。エントリは、ファイルまたは別のツリー (ディレクトリ) を記述できます。各行には、エントリ名、その SHA1 ハッシュ、およびそのモードが含まれています。より詳細な説明は、ここで見つけることができます。

git ls-treeやのようなコマンドgit cat-file -pは、このオブジェクトのテキスト表現を出力します。このテキスト形式は非常に単純な変換です。明確にするために、SHA-1 はエントリ名の前に 16 進数形式で表示され、それが指すオブジェクトの種類 (「blob」、「tree」) を説明する列が追加されています。

そのハッシュは、そのコンテンツのハッシュとして単純に計算されます。構成要素の名前とハッシュが含まれているため、サブツリーのいずれかのハッシュが変更されるたびに、ツリー ハッシュが変更されることが保証されます。

于 2012-09-04T04:07:21.823 に答える