2012-05-31 16 views
7

Sto cercando di contare il numero di commit da quando è stato effettuato un tag.Il conteggio dei commit dal tag

Ho provato a utilizzare git rev-list ma sembra che restituisca gli stessi risultati, non importa quello che provo. Questo è quello che ho provato:

$ git rev-list 1.7Start^..HEAD | wc -l 
13902 
$ git rev-list HEAD | wc -l 
13902 

Cercando di contare il numero di commit in quanto il tag 1.7Start è stato creato. Sono attualmente in master quindi utilizzando HEAD ma utilizzando git rev-list master | wc -l mi dà lo stesso.

Non c'è stato 13000+ impegna dal 1,7

caso git rev-list master mostrare me ogni impegno in master e quindi produrre un numero maggiore di 1.7Start^..master che dovrebbe solo darmi la differenza?

+0

Questo mi suggerisce che non c'è cronologia in comune tra '1.7Start ^' e 'HEAD'. Per verificare se questo è il caso, vedere cosa produce 'git merge-base 1.7Start^HEAD' - la mia ipotesi è un errore che indica che non c'è commit in comune. –

+0

nessun errore, e nessun valore di ritorno –

+0

A destra, che indica che non c'è storia in comune, che è sorprendente. Come è stato generato questo tag? –

risposta

4

i risultati che state ottenendo suggeriscono che non c'è storia in comune tra 1.7Start^ e HEAD, così 1.7Start e HEAD deve avere diversa radice impegna. (La sintassi a..b quando passato a git rev-list significa semplicemente "ogni commit in b che non è a.)

Nelle osservazioni di cui sopra, l'interrogante indicato che questa sorta perché il repository è stato migrato dalla Subversion ed è interamente master distinta dal ramo importato che 1.7Start punti.

3

Git ha git rev-list --count che fa questo più veloce wc-l.

C'è anche il git rev-list --use-bitmap- index - conto nelle versioni successive di git, che è un'ottimizzazione di --count.

rev-list richiede un commit, quindi un esempio, per trovare tutti i commit nel repository per il ramo corrente.

git rev-list --count HEAD 
0

Se vi interessa soltanto l'ultimo tag, come è tipico, git describe vi dirà ciò che l'ultimo tag è e quante commit sono state fatte nel ramo corrente dal momento che. Ad esempio, nell'output seguente, l'ultimo tag era 0.1.9 e 67 commits sono stati effettuati nel ramo corrente da esso.

$ git describe --tags 

0.1.9-67-gff9fd30 

Per la verifica, è possibile visualizzare l'elenco completo dei commit utilizzando il comando seguente. Se si pipa l'output su wc -l, è necessario restituire lo stesso conteggio. Si noti che !! è il comando precedente in Bash.

git log --oneline $(git describe --tags --abbrev=0).. 

$ !! | wc -l 

67 
Problemi correlati