Quello che stai chiedendo è essenzialmente l'espansione delle parole chiave. Per iniziare, dare un'occhiata alla domanda Git FAQ "Does git have keyword expansion?". Dice:
L'espansione della parola chiave non è consigliata. L'espansione delle parole chiave causa ogni sorta di strani problemi e non è comunque molto utile, specialmente nel contesto di un SCM. Puoi eseguire l'espansione delle parole chiave al di fuori di git usando uno script personalizzato. Lo script di esportazione del kernel di Linux esegue questa operazione per impostare la variabile EXTRA_VERSION nel Makefile.
Vedere gitattributes(5) se si vuole veramente farlo. Se la traduzione non è reversibile (ad es. Espansione della parola chiave SCCS), ciò potrebbe essere problematico. Suggerimento: lo $Id$-expansion fornito inserisce il nome dell'oggetto blob esadecimale di 40 caratteri nell'ID, è possibile capire quali commit includono questo blob utilizzando uno script come this.
Vedere here for a discussion e here on how GIT may help anyway.
Quindi git ha qualcosa come espansione di parole chiave, anche se non è raccomandato. Git inoltre non ha il concetto di una "revisione dei file" (che è il numero del tuo numero), quindi questo non sarebbe in grado di darti esattamente quello che stai chiedendo.
In alternativa è possibile creare un gancio (probabilmente un gancio di pre-ricezione?), Che incrementerebbe la versione per voi. Questo è solo un eseguibile (quindi può essere uno shell/Python/Perl/Ruby/qualunque-you-are-comfortable-script) che verrà eseguito automaticamente quando si esegue una push. Vedi lo githooks man page.
Lo script gancio sarebbe:
- identificare i file che stanno per essere modificati.
- Di quelli, trova quelli che contengono il modello
@version \d+
- Incrementa la versione. Si desidera incrementare il valore nel commit parent e non il valore attualmente nel file!
Si noti che questo è almeno così male come usare la sostituzione di parole chiave che la FAQ Git raccomanda contro, e forse molto peggio. Ciò potrebbe portare a fastidiosi conflitti di fusione. Potresti anche finire facilmente con numeri di versione fuorvianti nel tuo codice, specialmente se dovessi mai eseguire una correzione per una versione precedente, anche se probabilmente si verificherà anche ogni volta che unirai le modifiche da più repos/filiali (che è piuttosto comune con la maggior parte git workflows) se non stai attento.
fonte
2010-12-26 05:39:58
Vedere anche http://stackoverflow.com/questions/1127177/to-put-the-prefix-revision-number-to-codes-by-git-svn – VonC