2012-02-16 7 views
8

Ho un progetto Python con documentazione e distutils di Sphinx per la pubblicazione su Pip.Controllo delle versioni coerente nel progetto Python

Entrambe queste funzioni richiedono una versione (per esempio, 0.4b3)

C'è una best practice per mantenere automaticamente un numero di versione coerente tra le varie utility che richiedono numeri di versione?

Come bonus, c'è qualcosa che si integra con git (ad es. Tramite tag)?

+1

È possibile migrare questo argomento a programmers.stackexchange.com, questo sembra più adatto per quel sito. –

risposta

0

Questa è una risposta non testata, ma immagino che sarebbe abbastanza facile fare con la sfinge nello script conf.py. Poiché questo script è solo Python, si potrebbe fare qualcosa di simile:

import subprocess 

... 

path_to_source = "../src" 
release = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=path_to_source) 
version = subprocess.check_output(["git", "describe", "--tags", "HEAD"], cwd=path_to_source) 

Naturalmente, si potrebbe desiderare di fare un po 'di elaborazione stringa sull'uscita dei comandi per farli come li volete, e un po' di controllo degli errori, ma l'idea di base dovrebbe valere.

Come ho detto, non ho provato questo, quindi potrei essere completamente sbagliato, quindi dimmi se trovi un problema con questa idea.

+0

Grazie per il frammento, ma per essere chiari, stavo cercando qualsiasi pratica già in uso, piuttosto che provare a rotolare il mio. – muckabout

1

Questa è una domanda preferita sulle mailing list di Python distutils. Puoi importare il tuo modulo da setup.py così come da conf.py e ottenere modulo. versione. Questo potrebbe non funzionare a seconda delle importazioni, dell'uso di 2to3 o di altri fattori, nel qual caso è possibile spostare la versione in un file di testo e aprirla dal modulo, setup.py e conf.py.

La mia opinione personale è che non è un grosso problema aggiornare il numero di versione in tre punti. È un passo minore nel processo di rilascio.