Lavora su un ramo principale per il tuo lavoro regolare. Quando sviluppi una funzione, considera un ramo di una caratteristica, quando è chiaro che farai altre cose prima che la funzione sia finita.
Per commit che producono codice che non compila (o ha altri errori ovvi) usa un ramo locale, che non viene mai spinto. Unisci le commit in un secondo momento e rebase fino a renderlo pulito, rispetto a rebase su master o come branch di feature che si fondono in master.
Per una versione, crea un commit di rilascio, ovvero modificando il numero di versione nel readme, modificando la voce ChangeLog da 1.1.0-dev ()
a 1.1.0 (2017-09-22)
e simili. impegnalo ad esempio con il messaggio di commit "versione 1.1.0".
Se prevedi di supportarlo parallelamente alle versioni più recenti, crea un ramo per v1.1.0, in cui scegli i bugfix dal ramo principale. Per 1.1.1
, quindi, crei un commit version 1.1.1
corrispondente e tag nel ramo.
Lascia i vecchi rami così come sono. Non sai mai quando sosterrai una soluzione molto importante per un cliente che vuole davvero utilizzare la vecchia versione. Si può considerare di aggiungere un commit che indica la mancanza di supporto quando una vecchia versione non viene più mantenuta. Ma un suggerimento nel readme sulla home page e sul master può essere sufficiente.
Le buone versioni non cambiano mai. Se la tua versione 1.1.0 è danneggiata, rilascia un 1.1.1 funzionante e rimuovi i pacchetti danneggiati per 1.1.0 dal tuo sito web. Alcuni siti come python pypi non ti permettono nemmeno di caricare un nuovo pacchetto con lo stesso numero di versione, perché le persone non sarebbero mai in grado di dire se hanno la versione danneggiata o funzionante.