Modifica : rendendolo ancora più chiaro man mano che la taglia sta per scadere: esiste un modo di importare la cronologia (estraendo da diversi SCM) direttamente in un ramo specifico con Mercurial?
Attualmente sto lavorando in un'azienda che utilizza Perforce e sto facendo strada per il controllo della versione distribuita con Mercurial. Ho avuto successo nell'importare la cronologia di Perforce utilizzando la perfarce (un nome abbastanza adatto, rido ogni volta che lo vedo / lo dico), tuttavia, funziona solo con un singolo ramo alla volta.
Ecco come funziona la mia integrazione con P4:
- Per forza, crea un "cliente", che è una specie di descrizione di ciò che aggiornerai / estrai costantemente. Questo può riguardare solo un ramo alla volta (tronco o altro).
- Una volta fatto, esegui
hg clone p4://<server>/<client_name>
- Vai a .hg / hgrc e inserisci la linea del percorso di perforce:
perforce = p4://<server>/<client_name>
- Funziona normalmente con il codice sotto Mercurial, fai
hg pull perforce
per sincronizzare,hg push
per esportare un elenco delle modifiche
Quello che mi piacerebbe essere in grado di fare è avere un percorso forzato per ramo e avere tutto ciò che funziona nello stesso repository. Ora, la spinta non è un problema, tuttavia, se estraggo la cronologia da un altro ramo, finirebbe con il ramo predefinito.
Mi piacerebbe essere in grado di fare qualcosa come hg pull perforce-R5
e farlo atterrare nel ramo R5 di Mercurial. Anche se non avessi una storia di fusione, sarebbe abbastanza dolce poter conservare la cronologia del ramo.
Ci sono anche altri plugin per CVCS che ti permettono di integrare mercurial, ma AFAIK il subversion ha lo stesso problema.
Non penso che ci sia un modo diretto per farlo, ma finché potrei automatizzare il processo con alcuni hook e script in una singola macchina Mercurial, sarebbe sufficiente.
Modifica : per rendere le cose un po 'più chiare:
- Perforce trunk è mappato al ramo predefinito di Mercurial
- Il ramo Perforce R1 deve essere mappato al ramo release-1 di Mercurial (uguale per R2, R3, ecc.)
- Quando dico a Mercurial di tirare dalla perforce (cioè
hg pull perforce
, dove "perforce" è il nome del percorso che punta al client Perforce) dovrebbe estrarre il trunk Perforce nell'impostazione predefinita di Mercurial. - Quando dico a Mercurial di tirare da perforce-R1 (cioè
hg pull perforce-R1
, dove "perforce-R1" è il percorso del client R1) dovrebbe tirare il ramo Perforce R1 al ramo "release-1" di Mercurial. QUESTA È LA PARTE CHE STO CHIEDENDO .