Sfondo
Durante lo sviluppo del nostro sito (ASP.NET), abbiamo scoperto che il nostro controllo sorgente esistente (SourceGear Vault) non funzionava per noi. Quindi, abbiamo deciso di migrare a Git. Tuttavia, la traduzione è stata meno che liscia.
Il nostro sito è suddiviso in tre ambienti DEV, QA e PROD. Per la maggior parte, DEV e il repository di controllo del codice sorgente sono stati sincronizzati l'uno con l'altro. C'è un ramo nel repository, se una pagina stava per essere spostata in QA, quindi il file è stato spostato manualmente, stessa cosa con le cose che erano pronte per PROD. Pertanto, i nostri attuali ambienti QA e PROD non corrispondono a nessun commit particolare nel ramo principale.
Precisazione: le filiali QA e PROD non sono al momento, né sono mai state nel controllo del codice sorgente.
La domanda
Come faccio a spostare QA e PROD in Git? Dovrei dimenticare la storia che abbiamo mantenuto fino a questo punto e ricominciare con un nuovo repository? Potrei iniziare con tutto su PROD, quindi creare un ramo e inserire tutto da QA, quindi creare un altro ramo da esso con DEV. In questo modo non solo i rami rifletteranno le differenze negli ambienti, saranno nel giusto ordine cronologicamente con i nuovi commit nel ramo DEV.
Quello che ho provato fino ad ora
Ho pensato di creare un ramo QA dal master attuale e di utilizzare robocopy per rendere la cartella di lavoro simile all'ambiente QA corrente. Questo non funziona perché il nuovo commit da parte di QA rimuoverà nuovi file da DEV e li rimuoverà quando ci uniremo, sospetto che ci saranno problemi simili se avvii QA a un commit precedente (anche se non esatto) da DEV.