2013-01-22 3 views
8

Hy!Commits in einem Gitbündel

Gibt es eine Möglichkeit, eine Liste aller in einem Git-Bundle gespeicherten Commits zu erhalten, ohne sie vorher zu klonen?

Die Köpfe zu bekommen ist einfach, aber ich konnte keinen Weg finden, mich vollständig abzumelden.

+0

warum brauchen Sie das? – Chronial

+0

Bevor ich das Bundle im Repository zusammenführe, möchte ich überprüfen, wo das Bundle steht (im Vergleich zum Repo). Ob sein Kopf bereits im Repo vorhanden ist oder umgekehrt. – mat

+0

vielleicht in diesem Fall wäre es einfacher, das Bündel als Remote hinzuzufügen? – araqnid

Antwort

7

Es ist nicht möglich, eine spezielle Software zu schreiben, um durch das im Paket enthaltene Paket zu gehen. Wenn das Bündel mit negativen Referenzen erstellt wurde, ist es möglich, dass es Deltas enthält, die nicht aufgelöst werden können, indem nur Objekte im Bündel verwendet werden (das in das Bündel eingebettete Paket kann dünn sein).

Cloning das Bundle (zumindest zu einem bloßen Klon) wird die Refs aufteilen und und indizieren das Paket, ein Format, mit dem Standard-Git-Befehle arbeiten können, so ist es der einfachste Weg (in Bezug auf Integrationsaufwand) Lies es.

Eine Sache, die Sie tun können, um ein Bundle vor dem Zusammenführen in der Vorschau anzuzeigen, besteht darin, es einfach als Remote-Repo hinzuzufügen, und dann können Sie es abrufen und auf die Tracking-Refs zugreifen. So etwas wie:

git remote add bundle /path/to/bundle 
git remote update bundle 

und jetzt können Sie tun gitk master...bundle/master usw. Zweige im Bündel vergleichen im Vergleich zu Ihrem lokalen Repo und schließlich git pull bundle master es in fusionieren

Sobald Sie fertig sind, einfach. Aufräumen mit git remote rm bundle

+0

Wissen Sie, ob es eine Möglichkeit gibt, eine Zusammenführung zu simulieren (z. B. was passieren würde, ohne den Befehl tatsächlich aufzurufen). Zusammenführen und Ziehen haben keine Option --dry-run. – mat

+0

sie nicht, und es ist nicht. Sie können einfach eine Zusammenführung durchführen und dann abbrechen, indem Sie dorthin zurückkehren, wo Sie vorher waren ('git reset --hard HEAD', wenn Sie Konflikte haben,' git reset --hard HEAD @ {1} 'wenn die automatische Zusammenführung war erfolgreich) – araqnid

Verwandte Themen