Abbiamo un prodotto per il quale utilizziamo attualmente TFS come controllo del codice sorgente. Le funzionalità di ramificazione / fusione di TFS sembrano incredibilmente carenti e stiamo migrando il progetto a Git, e voglio considerare questa come un'opportunità per ripulire il più possibile le nostre pratiche di controllo del codice sorgente.
Attualmente abbiamo un singolo repository in TFS, chiamiamolo "root". sotto la radice, abbiamo tutti i nostri progetti separati. Abbiamo 2 versioni del prodotto in questo repository e un'applicazione front-end separata per la versione 2 del prodotto; attualmente il repository ha un aspetto simile al seguente:
<root repository>
|
|___Product_V1
| |_[master branch]
| |_[dev branch]
| |_[any release candidate branches]
|
|___Product_V2
| |_[master branch]
| |_[dev branch]
| |_[any release candidate branches]
|
|___Web-based_front-end_for_Product_V2
|_[master branch]
|_[dev branch]
Ora, durante la migrazione a Git non sono sicuro di quale sarebbe la migliore pratica per archiviarli, le mie idee attuali sono le seguenti:
- Disponi di un repository separato per tutti i progetti, un repository per
Product_V1
, un repository perProduct_V2
e un repository perWeb-based_front-end_for_Product_V2
- questo sembra un problema perché il front-end basato sul Web e il back-end saranno Seperated - Dispongono di repository separati per
Product_V1
eProduct_V2
, hanno una cartella "backend" e una "frontend" sotto il repositoryProduct_V2
e archiviano i progetti in essi rispettivamente. Questa sembra l'opzione migliore tra queste, ma vorrei sapere di eventuali problemi che potrebbero sorgere da persone che hanno forse fatto questo in pratica? - continua come eravamo, abbiamo un singolo repository con 3 directory sotto di esso, uno per
Product_V1
, uno perProduct_V2
e uno per il front-end. Sembra una non-opzione,Product_V1
eProduct_V2
sono totalmente non correlate e qualsiasi modifica aProduct_V1
non ha alcun effetto suProduct_V2
e viceversa. Sono progetti totalmente indipendenti.
Quali sono le migliori pratiche per Git che la maggior parte delle persone seguirebbe in questa situazione? Il mio istinto è di andare con l'opzione numero 2, ma non voglio implementare qualcosa ora solo per colpire un evidente insuccesso a 6 mesi di distanza a cui non pensavo al momento dell'attuazione.