Ho una base di codice C che supporta un certo numero di personalità di costruzione, per una data architettura di schede. È principalmente in modalità di manutenzione. Non facciamo nuovi sviluppi attivi su di esso.
Abbiamo una nuova scheda per una generazione 2 del prodotto. La generazione 2 sostituirà la generazione 1 (non stiamo costruendo altre schede Gen 1). La seconda generazione richiederà una buona parte del codice da riscrivere completamente. Direi il 50% di esso. OTOH, c'è un codice che rimarrà lo stesso. Rendere la build modulare per supportare entrambi i tipi non vale la pena per noi. In pratica, stiamo essenzialmente inserendo il progetto in due in modo permanente.
Sto sollecitando l'input su solo
- Crea un nuovo repository git, copia il codice dal vecchio al suo interno e decolla e scopri dove ci porterà il futuro.
- Conserva lo stesso repository, ma aggiungi solo altri rami.
Attualmente utilizziamo uno schema nel nostro repository per avere un ramo master
per le uscite di produzione, un ramo testing
dove accumuliamo lavoro "benedetto" e singoli rami per le diverse unità di lavoro che facciamo.
I pro / contro come li vedo sono:
- Due repository
- Pro: i rami restano semplici. Costretto ad avere un repository per ogni carico se ho bisogno di confrontare
- Contro: non è possibile selezionare tra i due (raramente lo facciamo però)
- Un repository, rami diversi
- Pro: codice tutto rimane nello stesso ramo, forse in grado di sfruttare alcune caratteristiche "cross-branch" di git
- Contro: devi annotare i rami
master
etesting
per le due cose diverse per disambigarli
Che cosa dovremmo fare, e perché?