2015-11-02 30 views
7

Ho un progetto che sta uscendo dalla fase alpha e che sono pronto per iniziare a rilasciare regolarmente. So GitHub ha un pulsante di 'magia' di rilascio, ma io in genere non mi piace 'magia' caratteristiche che non so esattamente quello che fanno:C'è un modo per far sì che git generi automaticamente un file di numero di versione per un'opzione --version?

https://github.com/blog/1547-release-your-software

Per quanto posso dire questo 'magic 'la funzione di rilascio su GitHub crea semplicemente un tag sul repository di origine per un determinato stato del codice o utilizza un tag esistente. Secondo questo link, i nomi dei tag devono riflettere il numero della versione semantica, ad esempio Major.Minor.Patch ex: v10.1.2 o qualcosa del genere.

Generalmente il metodo Git accettato per le versioni sembra essere semplicemente creare tag. Quello che mi piacerebbe fare è che Git crei automaticamente una sorta di file nell'albero del codice chiamato versione.txt o versione.h file che contiene il nome del tag git che ho creato in modo che questo file possa essere automaticamente quando l'utente invia myporgram --version sulla riga di comando. Preferibilmente mi piacerebbe un file di intestazione generato automaticamente poiché questo viene integrato nel file binario quando viene creato il programma. C'è un modo per farlo automaticamente o devo inserire automaticamente il numero di tag nel file prima di emettere il comando tag git?

risposta

4

Vedi bella soluzione qui: https://coderwall.com/p/mk18zq/automatic-git-version-tagging-for-npm-modules

Fondamentalmente lo fanno il contrario. Crea un file di testo o un file di intestazione. Diciamo: version.h:

#define VERSION 10.1.2 

E creare post-commit gancio che cerca le modifiche nel file. Per distribuire: modificare la versione e confermare il file. Il gancio creerà un tag corrispondente.

+0

Questo può essere fatto al contrario? Un hook post-commit può aggiornare il file di testo con un numero di versione incrementale o semplicemente con il numero di commit? –