2016-10-26 16 views
3

Wenn ich einige Tags in git habe kann ich diese verwenden:Gibt es eine Möglichkeit, die Anzahl der zusätzlichen Commits in Git ohne awk zu erhalten?

git describe --tags | awk -F- '{ print $2 }' 

die Zahl der Commits seit meinem letzten Tag anzuzeigen. Gibt es eine Möglichkeit, diese Nummer nur mit Git-Befehlen zu erhalten?

+0

Dieser Befehl zeigt nicht die Anzahl der Commits seit meinem letzten Tag - was ist die erwartete Ausgabe? Sollte es "Print $ 3" ​​sein? Hinweis: Mein letztes Tag hat auch einen Bindestrich. Vielleicht ist das anders als das Ergebnis –

+1

Die kurze Antwort ist "nein", weil der interne Zählalgorithmus von git describe ziemlich komplex ist. Wenn du jedoch ein bestimmtes Tag kennst, kannst du mit "git rev-list --count .." einigermaßen nahe kommen, vielleicht nah genug (dh, Revisionen zählen, die von 'HEAD' erreichbar sind, aber nicht von der gegebenen' '). Dies wird zu irreführenden Werten bei Zusammenführungen führen. '- first-parent' kann helfen, könnte aber auch weh tun. (Daher die Komplexität des Zählens in 'git describe'.) – torek

+0

Meistens habe ich auf einige Funktionen gehofft, die mit denen von git log vergleichbar sind, wo Sie einige Formatbezeichner bereitstellen können. –

Antwort

4

Git dunkel Voodoo:

git rev-list --count `git describe --abbrev=0 --tags` HEAD 

oder vielleicht etwas geändert in (nicht Git kann nicht testen, aus dem Speicher zu schreiben)

git rev-list --count `git describe --abbrev=0 --tags`..HEAD 

Hinweis:

git log <RANGE> --pretty=oneline | wc -l 

wird auch funktionieren, aber viel langsamer, als Rev-Liste

+0

Und hier wieder werde ich über Mercurial "von Man für die Menschen gemacht" denken. Vergleichen Sie einfach Git Spaghetti mit Schuss und sauber 'hg log -l 1 -T '{nexttagdistance} \ n" ' –

+0

Es ist der mittlere von diesen: zählen Revisionen nach dem Tag, bis zu HEAD, mit' ..HEAD' wo '' ist von Ihrem 'git beschreiben' Trick. – torek

Verwandte Themen