Come gestire il numero di versione nel codice, tra le filiali?

5

Sto lavorando su un'app PHP, utilizzando tre rami principali: "master" (versione stabile corrente), "bugfix" (per le patch) e "next" (per la prossima versione secondaria).

Memorizziamo il numero della versione corrente nel codice - è usato per alcune cose, tra cui il controllo degli aggiornamenti dell'app, e anche il semplice busting della cache per i file CSS / JS (come styles.css?v=1.2.3 ) che aiuta durante l'aggiornamento.

Il mio problema riguarda i conflitti di fusione. Diciamo che ho la versione 1.2.3, e 'next' è ramificata lì per iniziare a lavorare sulla versione 1.3. Cambio la versione in quel ramo in 1.3.0 o 1.3.0-dev . Poi ho bisogno di correggere un bug nella riga 1.2, quindi il ramo 'dev' viene corretto e la versione 1.2.4 è rilasciata.

Ma ora quando unisco le modifiche nel ramo "successivo" ottengo conflitti di unione, perché la stessa riga è stata modificata in entrambi i rami. Ci sono delle strategie per evitarlo? O dovrei risolvere il conflitto di merge e andare avanti?

Ho visto alcune risposte in SE che parlano dell'uso dei tag git (che usiamo per le versioni) ma non penso che questo aiuti davvero la mia situazione dal momento che abbiamo bisogno del numero di versione nel codice.

    
posta DisgruntledGoat 11.03.2017 - 23:53
fonte

1 risposta

2

La prima cosa è leggere e capire Versioning semantico .

Il trucco successivo consiste nell'esaminare il processo di compilazione e il sistema di controllo della versione in modo che il processo di compilazione aggiunga automaticamente i tag appropriati alla versione in base a quale "ramo" stai creando.

Se sei felice di utilizzare un piccolo python puoi generare il valore della versione, come variabile di ambiente o come% co_de generato % file per o qualunque sia l'equivalente per le lingue in uso utilizzando i binding disponibili per la maggior parte dei sistemi di controllo delle versioni. Puoi anche fare trucchi simili con gli script di bash, ecc., Ma trovo la soluzione Python molto più pulita e più manutenibile.

Personalmente ho anche impostato un flag se una build include qualsiasi modifica non salvata.

    
risposta data 12.03.2017 - 13:58
fonte

Leggi altre domande sui tag