2017-12-19 8 views
0

私はそれがgitの特定のファイルにアクセスするための速い方法だと思います。しかし、私はディレクトリの名前がわからない06, 0d, 17, 27, 29, 2e何のために、なぜディレクトリの名前は06です。 GitはオブジェクトをハッシュGitのdocumentation、よりオブジェクトのディレクトリ名/は何ですか?

objects 
    ├── 06 
  │   └── d378aef5b28791df7c6b5a58c866d8569cac87 
    ├── 0d 
    │   └── 25470613db871791afd43ae724cbbe367c30ef 
    ├── 17 
    │   └── af6db51eca422ab8629a40cb54b8e5d8da2b3f 
    ├── 27 
    │   └── d749cd2a7e3d2b1e27080505e37b301f73108d 
    ├── 29 
    │   └── faabec2bc6b5a7b00a5d6d9ebc9f2a5daf3d5b 
    ├── 2e 
    │   └── e648b03e6b4bf45515a8eb3a3ab62400940fe2 
+0

重複https://stackoverflow.com/q/18731887/1256452(すでにけれども答えたので、私はちょうどそれらをリンクするためにこれを入れます) – torek

+0

は、私がupvotedてきた、私はより多くの知識を与えるためTorekに感謝しますあなたの答え:) – bxdoan

答えて

1

、上記からの出力は、40文字のチェックサムSHA-1ハッシュです。 Gitはそのハッシュの最初の2文字をサブディレクトリの名前として使用し、残りの38文字はファイル名として使用します。

オブジェクトディレクトリをもう一度調べると、その新しいコンテンツ用のファイルが含まれていることがわかります。これは、Gitが最初にコンテンツを格納する方法です。コンテンツの1つのファイルとして、コンテンツのSHA-1チェックサムとそのヘッダに名前が付けられます。サブディレクトリの名前はSHA-1の最初の2文字で、ファイル名は残りの38文字です。

同様
+0

ファイルシステムを幸せに保つために大きなディレクトリを小さなディレクトリに分割することは、やや混乱させて「ハッシング」と呼ばれることもあります。多くのファイルシステムでは、多数のエントリを持つディレクトリを移動するのが遅いため、100個のディレクトリに100個のファイルを格納し、1個のディレクトリに10,000個のファイルを格納することをお勧めします。 – tripleee

+0

@トリプルー私はこれについてもコメントするつもりでしたが、Linusがなぜ他の数ではなく2つの文字を選んだのか正確にはわからないので、黙っていました。また、フォルダーシステムが最大1000の異なるフォルダーを持つことで、オブジェクトをより簡単にナビゲートすることができます。 –

+0

これは本当に私にとって有益です、ティムに感謝します – bxdoan

関連する問題