2012-11-26 6 views
6

Kann jemand erklären, warum Git beschreiben eine Zählung als "die Anzahl der Commits, die von git log tag.input" [von git-describe(1)] angezeigt würde?commit count Berechnung in git-describe

Konzeptionell hatte ich gedacht git-describe nutzte die Anzahl der Commits seit dem Tag als monoton steigender Zähler. Es scheint jedoch tatsächlich die Anzahl der Commits zu verwenden, die von 'input' erreicht werden können, abzüglich derer, die mit 'tag' erreichbar sind. Warum das?

In diesem speziellen Fall habe ich ein Release-Tag ("1.0.0") und dann ein Patch-Release ("1.0.1") auf einem Zweig ("1.0") erstellt. Ich bin zusammengeführt [siehe http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html] der Zweig ändert sich in Master. Aber wenn ich einen neueren Commit auf Master git-beschreibe, entspricht der Count der Ausgabe von git log tag ..input. Ich habe erwartet, dass es mit git log --ancetry-path tag..input übereinstimmt.

Danke.

+1

Ich glaube 'git beschreiben --first-parent' sollte tun, was Sie wollen. – ctn

Antwort

1

git describe ist eine Möglichkeit, die HEAD in einer sinnvollen Weise zu kommunizieren. Es ist eine einfache Antwort auf die Frage "Wo bin ich in der Geschichte?" oder "Welche Version des Codes ist das?"

Also, wenn Sie den Befehl ausführen, startet es , wo Sie derzeit sind, ob das die Spitze master ist, ein anderes Tag oder nur ein zufälliges Commit. Von diesem Startpunkt aus wird rückwärts gezählt, bis ein Tag gefunden wird. Von dort wird das Tag, die Anzahl der gezählten Commits und dann die kurze Commit-Nummer gedruckt.