Sto cercando un'alternativa git a "svn info".git alternative a "svn info" che possono essere incluse in una build per la tracciabilità?
Oggi aggiungo alcune informazioni che SubVersion mi fornisce con il comando "svn info" direttamente nella mia build, e che viene poi inserito in un file sorgente che lo stampa durante l'avvio. In questo modo so sempre da dove viene questa build e come recuperarla di nuovo.
Se si dispone di "informazioni svn" come URL, root di repository, UUID repository e Revisione, si dispone di un buon collegamento tra ciò che viene distribuito e il buildsystem. E se qualcuno segnala un bug, sai da dove proviene il software, e dal momento che quell'informazione è stata automaticamente inclusa, il rischio di errore umano è minore.
Ora la domanda è: quali informazioni sono necessario ottenere da git in modo da poter identificare in seguito da dove proviene quella build? E come utilizzare tali informazioni per tornare esattamente a quella versione?
(Forse ho bisogno di aggiungere alcune informazioni sui "costruire computer di" pure poiché git è distribuito.)
Grazie Johan
Aggiornamento: Uso rev-parse era veramente utile, ho qualcosa di simile:
[email protected]:~/git_test$ git rev-parse HEAD
72ce5f3e13c61f76fde5c58cefc85eed91b6f1f8
E con questo m numero agic è più tardi possibile fare
[email protected]:~/git_test$ git checkout 72ce5f3e13c61f76fde5c58cefc85eed91b6f1f8
E sono tornato dove ero.
Aggiornamento: penso che se prendo alcune parti di che gli script VonC fornito e li metto nel mio BuildFile mi metterò il risultato che cercavo.
Aggiornamento: Una nota sulla "git descrivere", è necessario un vero e proprio tag (tag -a) in precedenza nella storia si ramo per fare questo lavoro o si otterrà qualcosa di simile.
fatal: cannot describe '72ce5f3e13c61f76fde5c58cefc85eed91b6f1f8'
Il problema è descritto anche qui http://www.rockstarprogrammer.org/post/2008/oct/16/git-tag-does-wrong-thing-default/
Ma vi prego di notare che un checkout sembra funzionare in ogni caso, anche tu che era un messaggio di errore.
git checkout 72ce5f3e13c61f76fde5c58cefc85eed91b6f1f8
La cosa normale tu sembra essere che si crea qualcosa come un tag "ver1.0", e poi se si continua a lavorare si ottiene qualcosa di simile:
[email protected]:~/git_test$ git describe
ver1.0-2-g4c7a057
[email protected]:~/git_test$ git tag -a ver2.0
[email protected]:~/git_test$ git describe
ver2.0
[email protected]:~/git_test$ git commit . -m "something..."
Created commit ac38a9d: something...
1 files changed, 1 insertions(+), 0 deletions(-)
[email protected]:~/git_test$ git describe
ver2.0-1-gac38a9d
Così, quando si usa descrivere correttamente funziona e può produrre più risultati leggibili dall'uomo e può essere davvero utile.
Grazie Johan
@Johan: la sceneggiatura che menziono di seguito è piuttosto loquace e progettata per simulare parte del comando "svn info". È sempre possibile ridurlo a una versione più concisa. – VonC
@VonC: hai un punto valido lì. – Johan