2016-09-07 6 views
1

を浅いフェッチ壊す誰かがこのように、Gitのリポジトリに「-レフリーパック」でrefspecフォーマットに何を教えてくださいすることができ:私はgit ls-remoteを実行すると、結果としてGitの梱包-レフリーエイリアスは

<some-hash> refs/tags/anytag 
^<tags-commit-true-hash> 

、I私はanytagをフェッチ浅いしようとすると

<some-hash>    refs/tags/anytag 
<tags-commit-true-hash> refs/tags/anytag^{} 

だから、私は<some-hash>にFETCH_HEADポインティングを受けるが、それをチェックアウトした後、私は<tags-commit-true-hash>を受け取ります。これにより、たとえ既にデータが存在していても、データが取り込まれるため、同じタグを浅くフェッチすることができなくなります。

ローカルGitのバージョン:Linuxのミントホスティング17.3

Gitリポジトリ上の1.9.1のLinux x86-64で:のBitbucket

は、誰もがこれらの奇妙なハッシュエイリアスを削除するか、そのpresenseを回避するためのいずれかの方法を知っていますか?

+0

「breaks shallow fetching」とはどういう意味ですか?あなたの質問には、意図した通りに動作しないものがあることを示す何も表示されません。 –

答えて

1

これらの「エイリアス」はタグオブジェクトです。余分なコメントを含み、実際のコミットを指しています(コミットがツリーを指し、ツリーがサブツリーとブロブを指しているのと同様です)。

私が知る限り、彼らは設計どおりに動作します。 「回避策」の必要はありません。

これは、データが(すでに存在していても)引き出されるため、同じタグを浅くフェッチします。

いや、既にあるデータはが引っ張られありません。

余分なのデータが引き出される必要がありますが、実際はほんの少しです。コミット自体とその中で参照されているツリーとブロブは、既に利用可能な場合は取り出さないでください。

+0

これはすべてのタグではありません。もう1つのレポには、タグオブジェクトが付いていない、大量のタグがあります。 「少しのデータ」からは、問題のリポジトリを使って大きなバイナリブロブを保存しています。なぜ私に尋ねないでください、私はこれをやっているだけです。したがって、特定の州では、20Mbのフェッチを得ることができます。同じ浅い状態。 –

+0

さて、軽量タグと完全タグオブジェクトの違いを理解しました。これが問題の根本原因でした。だから私はあなたの答えを答えにします。ありがとう。 –

+0

@ Target-sanですが、大きなオブジェクトはコミットの(2つ以上の参照を介して)下に格納されます。タグそのものは大きすぎるべきではなく、フェッチはそれが既に基本的なコミットを持っていることを理解しなければなりません(実際にあれば)。 –

関連する問題