2015-12-31 16 views
5

Leggendo il documento, vedo che ho potuto prevedere cosa Git utilizzerà come "committer" combinando git config user.name e git config user.email con $GIT_COMMITTER_NAME e $GIT_COMMITTER_EMAIL. Ma quando scrivo il codice che lo fa, finisco con la sensazione di riscrivere un pezzo di codice che è già in Git e preferirei piuttosto riutilizzare il codice di Git per quello.Come ottenere informazioni "committer" che Git utilizzerà

Così, proprio come io preferisco usare git rev-parse --git-dir piuttosto che cercare un .git e/o verificare la presenza di $GIT_DIR, mi piacerebbe utilizzare un comando come git show-me-the --committer per ottenere la solita NAME <EMAIL> stringa. Eppure non sono stato in grado di trovare questo nel manuale (s).

+0

Hackish, ma è possibile eseguire un commit e scaricare le informazioni da esso –

+1

È anche possibile creare quell'impegno utilizzando 'git commit-tree' per evitare l'aggiornamento di eventuali ref:' git show -s --format = '% cn <%ce> '$ (git commit-tree $ (git write-tree) hvd

risposta

8

È possibile utilizzare il comando git var:

git var GIT_COMMITTER_IDENT 

Questo può essere eseguito al di fuori di qualsiasi worktree Git, stampa l'informazioni committer nel formato name <email> timestamp timezone, e utilizza lo stesso codice di Git che viene anche eseguito quando commettere, rispetta quindi le chiavi di configurazione e le variabili di ambiente. A seconda di cosa vuoi fare con queste informazioni, potrebbe essere necessario filtrare il timestamp e il fuso orario.

+0

Buona scoperta. Stavo lavorando per assemblare una stringa in bash e inserire l'output dei comandi 'git config', ma questo è molto più semplice. –

+0

Questo filtra le informazioni extra: 'git var GIT_COMMITTER_IDENT | sed 's />.*/>/', ma credito a @hvd per la risposta originale. –

+0

Oppure 'git var GIT_COMMITTER_IDENT | awk '{NF- = 2; print} '', o' committer = $ (git var GIT_COMMITTER_IDENT); committer = $ {committer% \> *} \> ', o uno dei tanti altri modi. :) – hvd

Problemi correlati