Sto eseguendo questo script di shell ogni volta che eseguo uno git commit -m "msg"
che scrive il log di commit in un file php. Voglio che includa anche il messaggio di commit corrente che sto facendo in quel momento.Utilizzo di un hook Git per creare un registro di commit e aggiunta al commit corrente
mio script di shell:
#!/bin/sh
path="path/to/gitlog.php"
echo "<?php $git_log = array(" > $path
git log --date=iso --pretty=format:'array("%h","%an","%ad","%s"),' >> $path
echo ");" >> $path
Il gitlog.php viene salvato al mio repository, che io poi git push
.
Attualmente l'ho nel gancio 'pre-commit', c'è un modo per ottenere il messaggio di commit all'interno di questo hook?
mio caso d'uso
Io sono l'unico sviluppatore del progetto. C'è poco tempo! è per gli altri che sono coinvolti nel progetto per vedere i progressi e leggere i registri di commit descrittivi senza che il sovraccarico di me debba raddoppiare. Il registro viene emesso in una dashboard a cui tutti hanno accesso.
Git non è in esecuzione sul server cruscotto, ei file vengono distribuiti da un repository società di hosting (Beanstalk)
Un hook di pre-commit viene eseguito prima del commit, quindi non può includere il commit stesso. Puoi creare un nuovo commit aggiuntivo * dopo * che hai effettuato il commit e puoi anche fare in modo che quel nuovo commit abbia un genitore diverso dal commit più recente (questo è il modo in cui 'git commit --amend' funziona), ma non è possibile modificare il commit esistente. Se stai cercando di includere le informazioni sulla versione, il solito metodo con git è di mantenere quel file fuori da git, specialmente se l'intero file è generato da un commit (come questo sarebbe). Per visualizzare un vecchio commit fai il checkout, quindi esegui la tua "versione generica". – torek
@torek, thks - non c'è un hook che viene chiamato prima dell'esecuzione del commit effettivo e viene passato il dato del messaggio, che posso aggiungere manualmente il messaggio di commit e la data al log, ri-eseguire il 'git add. ' e infine continuare con l'impegno? – digout
Aha, sì, c'è l'hook 'commit-msg'. Ha lo scopo di consentire di modificare il messaggio (per gli standard di formattazione) o di rifiutare il commit se il messaggio è sbagliato. Non ho mai utilizzato questo hook personalmente ma funziona al punto giusto nel processo di commit. Consiglierei di non fare 'git add .' (che potrebbe aggiungere file che si sta deliberatamente lasciando modificati ma non modificati) ma' git add $ path' potrebbe funzionare correttamente qui. (Suggerisco di provare anche con commit di file specifici, e/o 'git commit -a', per vedere se funziona proprio lì.) – torek