2012-11-25 22 views
6

Vorrei generare un rapporto GIT settimanale, in cui posso vedere quanti codici sono stati inviati e cancellati da ciascun sviluppatore in un intervallo di tempo specifico.Attività settimanale GIT

Lo scopo è quello di ottenere panoramica generale dell'attività sviluppatori nella specifica tempistica

  • Data di inizio
  • Data di fine
  • Developer
  • quando commette codice
  • Aggiunto
  • codice eliminata

Sarebbe bello se posso esportare queste informazioni in formato CSV

[some-script/command] > weekly-git-log.csv 

risposta

1

Elenco delle modifiche per l'utente specifico intervallo di date specifico - dettagli Ogni file

git log --pretty=format:"%h,%an,%ad,%s" [email protected] --since=2012-11-19 --until=2012-11-20 --date=short --numstat 

elenco delle modifiche per l'utente specifico intervallo di date specifico - Impegnarsi sintesi

git log --pretty=format:"%h,%an,%ad,%s" [email protected] --since=2012-11-19 --until=2012-11-20 --date=short --shortstat 

versione corta finale

git log --pretty=format:"%Cgreen%ad%x09%Cblue%s" --date=short [email protected] --shortstat --since=2012-11-19 --until=2012-11-20 
5

mi piacerebbe iniziare con git log --since="1 week ago" --until="now" e customize it to your heart's content.

Esempio:

git log --since="1 week ago" --until="now" --format="%an,%ct,%s" > weekly-git-log.csv

Non stai comportando molto specifiche su ciò che si desidera memorizzare nel file CSV, quindi vi sto dando una risposta molto generale e che ti permette di compilare i dettagli te stesso.

EDIT:

Se si desidera ottenere linee aggiunto/rimosso, si sta andando ad avere per ottenere un po 'più elaborato e utilizzare uno script bash:

#!/bin/bash 
IFS=$'\n' 
DATA=(`git log --since="1 week ago" --until="now" --format="%ct,%an,%s,"`) 
LINES=(`git log --since="1 week ago" --until="now" --pretty=tformat: --shortstat | gawk '(NF > 0){ printf "%s,%s\n",$1,$4 }' -`) 

i=0 
while [ $i -lt ${#DATA[@]} ]; do 
    echo "${DATA[$i]}${LINES[$i]}" 
    i=$[i + 1] 
done 

sto buttando in linee aggiunte/rimosse dopo il messaggio, dal momento che è più facile da fare nella sceneggiatura (non sono così eccezionale con bash). Questo dovrebbe essere un buon fondamento per quello che vuoi fare. (Chiamata ./script.sh >file.csv per output in un file)

Si noti che le virgole del messaggio di commit si romperà il file CSV, vorrei cambiare le virgole nel --format a qualche personaggio oscuro che non può essere digitato regolarmente su una tastiera, cancella le virgole nel messaggio, quindi sostituisci le virgole per quel personaggio oscuro.

Oppure puoi semplicemente eliminare lo %s nel formato anche se non hai bisogno del messaggio.

+0

Grazie! Sì, ho specificato che cosa sto esattamente cercando: - Data di fine - - Developer - data Inizia quando commette - Aggiunto codice - Cancellato il codice Il comando include solo alcuni di questi. Ho bisogno di generare tabella con queste informazioni: Data | Nome dello sviluppatore | Aggiunto | cancellato | Messaggio di commit Eventualmente non è necessario impostare la data di inizio e di fine poiché sono in grado di filtrare facilmente questo in Excel. –

+0

Aggiunto uno script che ti dovrebbe avvicinare molto di più a quello che vuoi. Di nuovo, guarda nella pagina man di git log, specialmente nella sezione di formattazione, e perfeziona questo script con qualsiasi cosa tu abbia bisogno di fare. –

2
git log --since="1 week ago" --until="now" \ 
--format="%an,%ct,%s" > git_log_11_17_2012-11_24_2012.csv 

nota che "1 mese fa" si può fare con esattamente quel testo "1 mese fa" (quindi non è un segnaposto per un vero appuntamento, tuttavia, che potrebbe essere utilizzato anche) grazie a approxidate

+0

Grazie! Esattamente come il precedente. Devo generare una tabella più sofisticata. BTW: Modifica il tuo comando piuttosto che solo per una riga. Ora non funziona per copia incolla. –

+1

Ho aggiunto il carattere di continuazione della linea "\". btw non è esattamente lo stesso del precedente, ad esempio il "=" mancava nel precedente (ma è stato aggiunto dopo aver postato il mio ...) –