2016-09-07 7 views
1

Kann mir bitte jemand sagen, was in 'gepackt-Refs' in Git-Repository das Refspec Format ist, wie folgt aus:Git gepackt-Refs Aliase brechen flach holen

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

Als Ergebnis, wenn ich git ls-remote durchführen, ich erhalten

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

Also, wenn ich zu flach holen anytag versuchen, erhalte ich FETCH_HEAD zu <some-hash> zeigen, aber es nach dem Auschecken ich erhalten <tags-commit-true-hash>. Dies bricht oberflächlich, wenn das gleiche Tag abgerufen wird, da Daten ohnehin gezogen werden (selbst wenn es bereits vorhanden ist).

Local Git Version: 1.9.1 Linux x86-64 auf Linux Mint 17.3

Git-Hosting: Bitbucket

Wer weiß, wie entweder, um diese seltsamen Hash-Aliase zu entfernen oder ihre presense umgehen?

+0

Was meinst du mit "bricht flach holen"? Ich sehe nichts in Ihrer Frage, das anzeigt, dass irgendetwas nicht wie beabsichtigt funktioniert. –

Antwort

1

Diese "Aliase" sind Tag-Objekte. Sie enthalten zusätzlichen Kommentar und zeigen auf das tatsächliche Commit (ähnlich wie das Commit auf den Baum und der Baum auf die Teilbäume und Blobs zeigt).

Soweit ich das beurteilen kann, funktionieren sie wie geplant. Es gibt keine Notwendigkeit für einen "Workaround".

Dies bricht oberflächlich abholen gleichen Tag, als Daten sowieso gezogen wird (auch wenn es schon da ist).

Nein, Daten, die ohnehin schon ist es nicht gezogen.

Es gibt ein bisschen extra Daten, die gezogen werden müssen, aber es ist wirklich nur ein bisschen. Das Commit selbst und die darin referenzierten Bäume und Blobs sollten nicht gezogen werden, wenn sie bereits verfügbar sind.

+0

Ich sehe das nicht für alle Tags. Ein anderes Repo hat eine große Menge von Tags, die keine begleitenden "Tag-Objekte" haben. Ab 'wenig Daten' benutze ich Repository in Frage, um große binäre Blobs zu speichern. Bitte frag mich nicht warum, ich mache das nur. Also, für bestimmte Zustände kann ich 20MB holen. Für den gleichen flachen Zustand. –

+0

Okay, also habe ich den Unterschied zwischen Lightweight-Tags und Full-Tag-Objekten herausgefunden. Und das war die Ursache der Ursache. Also markiere ich deine Antwort als Antwort. Vielen Dank. –

+0

@ Target-San, aber die großen Objekte sind in (unter, durch 2 oder mehr Referenzen) der Commit gespeichert. Die Tags selbst sollten nicht so groß sein, und das Fetch sollte verstehen, dass es bereits das zugrundeliegende Commit hat (wenn es das tatsächlich tut). –