Sto lavorando in un'azienda che utilizza CVS, quindi HgSubversion non era un'opzione. Ho avuto la stessa domanda un paio di giorni fa e sviluppato un flusso di lavoro in base a questo:
http://momentaryfascinations.com/programming/how.to.use.mercurial.for.local.source.code.management.with.a.public.subversion.server.html
ho creato un repository Mercurial in cui il mio repository CVS è, che mi trattano come "sola lettura". Quindi clone questo repository hg "readonly" in repository funzionanti, dove apporto modifiche/correzioni localmente. Ho clonato il repository per ogni funzionalità e correzione che ho apportato, ma potresti anche avere un solo repository e utilizzare una diversa strategia di ramificazione per gestire il tuo sviluppo. Ecco a good overview di tali strategie.
La chiave di questo flusso di lavoro è quella del repository "readonly". Ero solito apportare le mie modifiche nel primo repository Mercurial che ho creato, che era in cima al CVS. Questo ha funzionato, ma ha creato confusione durante l'aggiornamento da CVS. Con questo livello aggiuntivo, puoi gestire le tue modifiche e aggiornare da CVS separatamente.
Mantenere in sincronia con CVS
Ogni volta che ci sono cambiamenti nel CVS, faccio un cvs update. Al repository hg "readonly", questo apparirà come file modificati. Per sincronizzare Mercurial, faccio semplicemente un
hg ci -m "Updated from CVS."
(Quindi, vedrete un sacco di quei messaggi nei miei ceppi Hg). A questo punto, il mio repository "readonly" è sincronizzato con CVS. Ora posso andare in uno dei repository che ho clonato ed emettere uno hg pull
e quindi hg update
per sincronizzarli.
commit dei cambiamenti da hg di nuovo al CVS
Andando nella direzione opposta, quando voglio impegnarsi a CVS, andrò in uno dei miei repository di lavoro in cui ho commesso i miei cambiamenti già a hg . Quindi I hg push
le mie modifiche di nuovo a "readonly", saltare al repository "readonly", fare un hg update
. Dal punto di vista di CVS, questo apparirà come appena modificato. Quindi faccio un cvs commit
di nuovo in CVS. Qui dovrò ripetere/riepilogare nel mio messaggio di registro il lavoro che ho fatto nel mio repository hg.
Certo, ci sono punti difficili in questo flusso di lavoro.Potresti apportare più modifiche in hg, che si sommano a una sola modifica in CVS/SVN, in modo che la cronologia non venga mantenuta in CVS/SVN e dovrai riassumere i tuoi messaggi di commit. Devi gestire manualmente mantenendo in sincrono CVS e il repository "readonly". Il vantaggio di questo è che non è necessario installare estensioni aggiuntive: si tratta solo dei file stessi da entrambe le prospettive. Tutto ciò che sta accadendo è abbastanza trasparente e sotto il tuo controllo.
Sto ancora tagliando i denti su hg, ma finora questo flusso di lavoro ha funzionato abbastanza bene.
Harvey ha fornito un bel schema di questo e lo rende un ottimo punto che questo flusso di lavoro si applica a qualsiasi altro VCS:
alt text http://sr105.com/other_vcs_to_hg_workflow.png
domanda simile qui: http://stackoverflow.com/questions/799860/ utilizzando-mercuriale-locale-solo-con-subversion-server. Penso che la mia domanda dovrebbe rimanere in giro anche se; questa è una di quelle domande che possono essere formulate in diversi modi. –
Aaa e questo: http://stackoverflow.com/questions/826938/interoperation-between-mercurial-and-subversion –
Ecco la stessa domanda su Kiln Overflow, o come si chiama: http://kiln.stackexchange.com/ domande/948/can-i-use-mercurial-local-e-update-da-push-to-a-a-subversion-repository/950 # 950 –