2009-12-14 20 views
23

A causa della mancanza di supporto Mercurial in diversi strumenti e dell'oppressione gestionale è diventato necessario convertire diversi repository Mercurial di prova in Subversion per conformarsi allo standard aziendale.Conversione da Mercurial a Subversion

Esistono strumenti o suggerimenti su come ottenere ciò senza perdere la cronologia delle revisioni e simili?

+0

Per la prossima wonderer che trova Mercurial strano e si strugge per Subversion, si può trovare questo link utile: [Subversion Rieducazione] (http://hginit.com/00.html) – noelicus

+0

Per il prossimo vagabondo che trova Mercurial ripugnante, per favore non "rieducare" te stesso usando il link sopra a meno che tu non creda che un venditore che vende strumenti basati su Mercurial abbia un'opinione imparziale. Forse provare a rispettare le preferenze e le opinioni sugli strumenti VCS vs DVCS. Molte persone hanno provato entrambi - o sono stati costretti a - e hanno opinioni perfettamente valide su cosa * preferiscono * e perché. – JoGusto

risposta

28

L'estensione di conversione fornita con mercurial può utilizzare mercurial come src e subversion come dest.

hg convert --dest-type svn hgreponame svnreponame 

Assicurarsi di abilitarlo nel file .hgrc.

Se si desidera continuare a utilizzare mercurial in sordina, quindi hgsubversion consentirà di eseguire la sincronizzazione bidirezionale.

+1

questo fallisce dopo 2 revisioni con 'abortire : svn è uscito con lo stato 256' –

+1

Non ho usato la roba di svn dest, ma l'ho visto cambiare molto ultimamente sulla mailing list. Assicurati di utilizzare l'ultimo mercurial (1.4.1) e le ultime associazioni di swig per l'ultimo svn. Quindi inizia a utilizzare una combinazione di --debug --traceback e forse anche strace. Potrebbe essere necessario iniziare con una storia mercuriale interamente lineare, che è facilmente raggiungibile con 'hg clone http: // src -r tip'. Penso di aver sentito che il formato repo di svn non è in grado di memorizzare le revisioni di unione mercuriale in modo pulito. –

+4

Solo un'ulteriore nota su questo, gli aborti si stavano verificando a causa di carenze del file system di qualche tipo (ntfs3g). Continua a provare. –

3

Tailor dovrebbe essere in grado di fare quello che vuoi.

+0

Errore di collegamento: http://progetti.arstecnica.it/ server non trovato. – ChrisFreeman

+0

@ChrisFreeman: purtroppo sembra che arstecnica.it sia in calo. Debian ha ancora i file nel loro database dei pacchetti: http://http.debian.net/debian/pool/main/t/tailor/tailor_0.9.35+darcs20090615.orig.tar.gz –

8

La risposta di Ry4an sopra fa esattamente il trucco; alcune istruzioni più dettagliate per tutti coloro (come me) che sta avendo difficoltà:

  1. Fatevi un favore e non mi provare questo su Windows. Dovrai installare una versione molto specifica di SVN e anche in questo caso alcune cose falliranno con vari messaggi di errore. La mia soluzione era di avviare un'istanza AWS pulita, yum-get le ultime versioni di mercurial e svn su di esso, clonare il repository HG ed eseguire il convertito lì.

  2. Aggiungi questo al vostro file di .hgrc per abilitare l'estensione convert:

    [extensions] 
    hgext.convert= 
    
  3. eseguire questo comando:

    hg convert --dest-type svn <hg_directory> <directory_for_svn_output> 
    
  4. Si potrebbe ottenere il seguente errore:

    abort: svn exited with status 256 
    

    Non arrenderti! Basta eseguire di nuovo lo stesso comando e continuerà da dove era stato interrotto.

    Se continui a riscontrare problemi, aggiungi --debug --traceback alla riga di comando per ottenere ulteriori dettagli su cosa è andato storto.

+0

Ehm, cosa c'entra Windows con tutto ciò? –

+0

@BillyONeal È passato troppo tempo, quindi non ricordo esattamente, ma sotto Windows la mia conversione è fallita a causa di alcuni problemi di sintassi (penso che sia dovuto a qualche problema con la formattazione dei parametri da riga di comando a svn.exe). Cercando quegli errori su Google, troverai che hai bisogno di una versione molto specifica di SVN perché funzioni. Dopo un po 'di tempo con esso, ho scelto di farlo solo su AWS e ha funzionato la prima volta. – nitwit

+0

Non sono riuscito a gestirlo su Windows e Linux. Su Linux i messaggi di errore sono mike mike @-virtual-machine ~/repos $ hg convertono --dest-tipo svn ~/Horizon ~/HorizonToSvn inizializzazione svn copia di lavoro 'HorizonToSvn-wc' fonte di scansione ... di smistamento ... conversione ... 6655 baseline 30357 abort: svn uscito con stato 32512 mike @ mike-virtual-machine ~/repos $ – mikelong