2013-04-16 4 views
7

Sto lavorando con un sistema di compilazione personalizzato che gestisce un gran numero di repository git e scritto principalmente in python.il modo più semplice possibile git può emettere il numero di commit tra "branch" e "remotes/origin/branch"

Mi farebbe risparmiare molto tempo se potessi scrivere un comando che segnalasse il ramo corrente di tutti i repository, quindi segnalare se il capo del "ramo" è lo stesso di "telecomandi/origine/ramo" ".

Abbiamo già un comando che eseguirà un comando shell all'interno di ogni repository git, quello che sto cercando è un metodo per ottenere alcune informazioni semplicemente formattate da git per quanto riguarda la posizione relativa di branch e remotes/origin/ramo. Qualcosa che sarà o il numero della differenza di commit o un semplice valore booleano.

Qual è il metodo per ottenere queste informazioni da git che riduce al minimo la quantità di analisi e elaborazione che devo fare sul lato python?

risposta

1

git status mostra il numero di commit avanti/dietro il ramo di monitoraggio remoto. Devi prima eseguire git fetch, perché altrimenti git non può sapere se qualcosa di nuovo è andato in remoto.

1

Se branch è assicurato di essere antenato di origin/branch (cioè in rapida forwardable), quindi

git log --oneline branch..origin/branch 

dovrebbe stampare i commit tra di loro, ognuno in una sola riga. Puoi contare le linee sia in python che in wc -l.

Non so se esiste una soluzione semplice e generale. Potrebbe non esserci antenato comune per origin/branch e branch, se è coinvolto un ramo orfano.

18

Se si dispone di una nuova versione abbastanza di git, è possibile utilizzare:

$ git rev-list --count --left-right branch...origin/branch 
2 1 

Il primo numero se il numero di commit branch è davanti a origin/branch, e il secondo è il numero di commit dietro. Quindi questo ramo ha due commit che non sono ancora upstream, e c'è un commit upstream che non è ancora nella mia filiale locale.

Credo che sia stato 1.6 o 1.7 quando è stato introdotto il conto.

Problemi correlati