2016-05-12 8 views
1

私は対話型sshまたはsshfsで私のホームにアクセスすることができるサーバ上の作業ディレクトリを持っています。共有を開始するために裸のリポジトリを作成したいと思いますそれ。gitクローン - ssh:objectsフォルダが空いているから

git clone --bare mount_point/path 

git clone --bare ssh://[email protected]/path 

を行う

は、二つの異なる結果を与えます。特に、主な違いはオブジェクトフォルダにあります。最初のファイルは00,0b、...サブフォルダとpackサブフォルダ内の特定のファイルです。 2番目のファイルにはinfopackしかなく、packのファイルは最初の場合とは異なります。結果として、2つのクローン裸のレポのサイズは異なる。

しかし、私は正常にgitログかgit diffのどちらかを正常に実行できます。

何が起こっているか教えていただけますか? ssh上のgit-cloneがリポジトリ内のオブジェクトをもっと圧縮することができますか?あるいは私はどこかで情報を失っていますか?それは、同じボリューム/同じcoputers上のリポジトリを扱うとき

はどうもありがとうございまし

答えて

1

のgitリポジトリのストレージをクローン化した最適化します。 --no-hardlinks--localなど、git clone --helpのオプションを見てください。実際にはそれを強制的に "本物のコピー"にすることは可能ですが、通常は必要ありません。

更新:いいえ、ハードリンクはありません。ネットワーク転送の前に、gitは受信側で欠落しているオブジェクトをパックし、これらのパックはアンパックせずに受け取ったまま保存されます。 git gcも同じです。 .git/objects/pack/には、名前が示すように、パックされたオブジェクトが含まれています。特定のパックファイルの内容を表示するには、git verify-pack -v .git/objects/pack/pack-<smth>.idxを使用します。チュートリアルについては、this docをチェックしてください。

+0

実際はそうではありません。作業ディレクトリが別のファイルシステム上にあるため、この場合はハードリンクは生成できません。また、万一、オブジェクト/パック内のファイルが何であるか知っていますか? – deandrade87

関連する問題