Domanda

Ho il compito di migrazione mia squadra e fonte da git a Perforce, e sto cercando idee su come spostare la storia in git p4.

sarei solo felice in movimento maestro ramo. Tuttavia, anche che si sta rivelando problematica.

sto usando il meraviglioso strumento git-p4. Creo un area di destinazione nel mio lavoro p4, e l'uso git p4 clone //depot/StuffFromGit per iniziare a monitorare in git-p4. Ho innesto tutti i cambiamenti del mio repository git nel clone git-p4. Posso quindi git p4 submit e da fare, tutte le modifiche sono spinti a P4.

Funziona grande quando gli sguardi git di storia come questa, bella e lineare:

A---B---C---D

Il problema arriva con più persone che lavorano al progetto. Anche se si sta lavorando su Master, che crea ancora rami che dividere e unire. Ancora, git-p4 gestisce con coraggio questo:

A---B---C---E
     \--D--/

git p4 traverse OK, commettendo ABCDE in ordine (o ABDCE, sia la storia di una persona prima).

Il problema nasce quando, ad esempio, C e D sia il cambiamento lo stesso file, ed E è una fusione reale onesto-to-bontà. git p4 rebase fallisce qui; che sarà riavvolgere i commit, ma durante la riproduzione che sarà applicabile C prima, quindi tentare D e trovare un conflitto. Sarà poi fermarsi, mi chiede di unione. Beh, E contiene l'unione ma mi sta chiedendo di mano-merge! 'Git p4 submit' fallirà in modo simile, solo che ora è p4 rifiutando il cambiamento pre-merge.

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

Così ora mi sono bloccato. C'è un modo per igienizzare la storia git o per ottenere git-p4 per capirlo? E 'frustrante come le unioni ci sono.

I pensieri che ho avuto:

  • Usa git filter-branch per eliminare tutti i riferimenti in conflitto file. Mi piacerebbe avere i commenti storia tutta, anche se mancano molte modifiche apportate ai file. Con circa 3000 commit della storia, vorrei finire la rimozione di tutta la storia chiave file (occupato). Alla fine del-file filtrati importare, mi piacerebbe aggiungere i file mancanti indietro facendo un finale commit della testa.
  • Dump la storia, fare una sola p4 impegnano della testa (semplice ma triste).
  • si sposta p4: ho lavorato che idea il più a lungo possibile.

Nessuno dei quali sono davvero grande. Tutte le idee su come git 'gt p4 rebase' o 'git p4 submit' al lavoro?

È stato utile?

Soluzione

L'opzione di "solo buttare via la vecchia storia" non è così male come sembra: si può solo mantenere il vostro repo git a fianco per sempre, nei bisogni chiunque caso di scavare attraverso la roba vecchia. Purtroppo, non c'è proprio nessun modo per rappresentare complesso punto di vista di git di storia nel vecchio-stile lineare sistemi come svn e P4.

Il motivo principale di guardare indietro nella storia vecchia è per le cose come 'annotare git' (presumo p4 dispone di uno strumento simile). Se questo è tutto quello che volete, allora forse quello che si vuole veramente fare è zucca tutta la stampa si impegna a fronte di appena uno dei loro genitori (in modo da apparire come un singolo commit al posto di una fusione). Questo è più simile a ciò che SVN e p4 avrebbe registrato nel proprio modello di storia, dove si fonde basta guardare come un singolo commit nel flusso lineare. Probabilmente si può fare questo con git-filter-branch o simili. Naturalmente, questo avrebbe perso tutta la storia che è accaduto il sotto-rami ... ma gli utenti p4 sono abituato a non avere queste informazioni.

Altri suggerimenti

Hai controllato la funzione "su misura"? E 'accumulo per la sincronizzazione di diversi VCS: es. Si suppone di avere Perforce-supporto.

Come un lato nota, la mia prima reazione sarebbe quella di mettere in discussione seriamente la decisione, ma credo che hai già fatto.

Penso che si dovrebbe provare con Tortoise SVN e poi Hg considerando l'aggiornamento singolo ramo o si può dire che la migrazione. Assicurarsi di avere tutto il dump clonato per essere sul sicuro. Buona fortuna!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top