Ho il compito di migrare la mia squadra & fonte da git a Perforce, e sto cercando idee su come spostare la cronologia git in p4.Migrazione da git a Perforce
Sarei felice solo con il master in movimento. Tuttavia, anche questo si sta rivelando problematico.
Sto usando il meraviglioso strumento git-p4. Creo un'area di destinazione nel mio spazio di lavoro p4 e utilizzo git p4 clone //depot/StuffFromGit
per iniziare a rintracciarlo in git-p4. Innesto tutte le modifiche del mio repository git nel clone git-p4. Posso quindi git p4 submit
ed essere fatto, tutti i cambiamenti sono passati a p4.
Funziona benissimo quando la storia git si presenta così, bella e lineare:
A---B---C---D
Il problema arriva con più persone che lavorano al progetto. Anche se stanno lavorando su master, ciò crea ancora rami che si dividono e si fondono. Ancora, git-p4 gestisce con coraggio questo:
A---B---C---E
\--D--/
git p4 attraversa OK, commettendo ABCDE in ordine (o la storia ABDCE, sia della persona in primo luogo).
Il problema si presenta quando, ad esempio, C e D cambiano entrambi lo stesso file, ed E è una unione reale e onesta. git p4 rebase
non riesce qui; riavvolgerà i commit, ma durante la riproduzione applicherà prima C, quindi tenterà D e troverà un conflitto. Si fermerà quindi, chiedendomi di unirmi. Bene, E contiene l'unione ma mi sta chiedendo di fondere a mano! 'git p4 submit' fallirà in modo simile, solo ora è p4 rifiutando la modifica pre-unione.
Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp Failed to merge in the changes. Patch failed at 0005 Changing main
Quindi ora sono bloccato. C'è un modo per disinfettare la cronologia git o per ottenere git-p4 per capirlo? È frustrante come le unificazioni ci sono.
pensieri che ho avuto:
- Usa git filter-branch per rimuovere tutti menzione di file in conflitto. Mi piacerebbe avere i commenti storici, anche se mancano molte modifiche ai file. Con circa 3000 commit nella storia, vorrei finire per rimuovere tutta la cronologia dei file (occupati) dei tasti. Alla fine dell'importazione dei file filtrati, aggiungerei i file mancanti eseguendo un commit finale dell'HEAD.
- Eseguire il dump della cronologia, eseguire un singolo commit P4 dell'HEAD (semplice ma triste).
- Non passare a p4: ho lavorato a quell'idea il più a lungo possibile.
Nessuno dei quali è veramente eccezionale. Qualche idea su come git 'gt p4 rebase' o 'git p4 submit' funziona?
Data la storia di git, è una specie di direzione divertente da migrare. –
Sembra che git-p4 stia cercando di unire C, D ** e ** E, e naturalmente fallendo miseramente. Hai controllato che stai utilizzando l'ultimo git-p4 e se ci sono alcune patch o altre persone hanno visto lo stesso problema? –
Wow, amico, mi dispiace. Sembra che ti stia muovendo come 10-15 anni indietro. – Jonathan