2009-05-05 9 views
21

A similar question è stato chiesto di recente, ma non è lo stesso.interoperabilità tra mercurial e subversion

Il sito Web Mercurial ha un confronto detailed page per 4 diverse opzioni per l'interoperabilità di Mercurial e Subversion.

Mi chiedo se qualcuno là fuori abbia provato uno o più di questi e possa riferire qualsiasi esperienza veramente buona o veramente brutta. La nota sulla hgsubversion download dice

hgsubversion è un'estensione per Mercurial che concede usando Mercurial come un client di Subversion. In questo momento è è non pronto per l'uso di produzione. Si dovrebbe usare questo solo se si è pronti a hackerare e immergersi nello all'interno di Mercurial e/o Subversion.

che è quasi come un invito a me segni che dicono "Abbandona la speranza, tutti voi che entrate qui" o "I trasgressori saranno arrestati". Quindi mi chiedo se valga la pena provare questa o altre alternative per qualcuno che non ha molto tempo da dedicare.

+4

+1 per pigrizia. Con tutti gli avvertimenti, non sono riuscito a provare nessuna delle opzioni :-) –

+0

Non direi "pigro", lo definirei "parsimonioso". La configurazione/gestione di una configurazione di controllo del codice sorgente è (supposto essere) solo una piccola parte del lavoro del software, che a sua volta è solo una piccola parte del mio lavoro. O quello o devo andare a infastidire il nostro gruppo IT e non lo sapranno dato che di solito lavorano con il software "Real" (Windows/IIS/SQLServer ecc.). Quindi devo usare saggiamente il mio tempo quando si tratta di "piccoli" compiti come questo. Quando sono pigro per davvero, ne sono orgoglioso. :) –

+0

"ora non è pronto per l'uso di produzione" - è ancora così? – inger

risposta

1

Utilizzo Subversion da diversi anni, ma sono interessato a provare questa idea VCS distribuita. (Mi piacerebbe usare git, ma non è così buono su Windows che lo esclude per il mio lavoro. Quindi voglio provare Mercurial.)

Inizialmente vorrei spingere e tirare con un server Subversion. Così ho provato l'opzione 1, hsubversion. Sono su Ubuntu 9.04 (Jaunty) con hg 1.1.2. Ho seguito le indicazioni fornite su quella pagina web. Sembrava tutto installare bene. Ma quando ho provato il comando hg svnclone, ho ricevuto un errore "comando sconosciuto". Ulteriori scavi hanno mostrato che ora basta fare clone di clone con l'URL SVN con prefisso svn +. ad esempio:

hg clone svn+https://server/svn/repo/

Ma poi, ho ricevuto un messaggio di errore:

abort: could not import module encoding!

Questo sembra essere un known bug, ma dopo un po 'armeggiare intorno, Non riuscivo a capire cosa dovrei fare per sistemarlo.

Riepilogo: l'opzione 1 al momento non è funzionale per me. Le altre opzioni non si adattano al mio flusso di lavoro desiderato.

Aggiornamento: l'ho provato di nuovo con Mercurial 1.2.1 e ho ottenuto lo stesso risultato. Qualcuno mi ha detto che il ramo in sviluppo mercurial-crew dovrebbe funzionare.

+1

hai bisogno delle ultime versioni di mercurial e hgubversion. Tuttavia - stai attento con hossubversion al momento. Sembra che ci sia un sacco di refactoring in corso –

+0

Grazie. Ho aggiunto un aggiornamento 1.2.1 e mercurial-crew. –

+0

Sì, hai bisogno di Mercurial 1.3 - il modulo di codifica è stato aggiunto dopo 1.2.1 è stato rilasciato. –

4

Penso che l'autore di hsubversions sia un po 'paranoico.Se segui il README - che significa utilizzare versioni opportunamente recenti di mercurial e subversion - non, qualunque cosa sia installata su o dalla tua distribuzione, allora funziona davvero abbastanza bene. Allo stesso modo, la documentazione inclusa è aggiornata; mentre quello che trovi sul web potrebbe non esserlo. L'ho usato per un paio di settimane con risultati ragionevoli, ma non perfetti.

È quando si entra negli angoli dei due sistemi che si hanno problemi: hgubversion e altre estensioni (ho problemi con hgtasks) non sembrano piacermi; non è chiaro come vengono gestite le proprietà, ecc.

+0

Ciao dal futuro! Sto usando hsubversion per un paio di mesi di uso quotidiano al lavoro, e sembra quasi perfetto. Ha qualche imbarazzo rispetto al Mercurial puro (ad esempio, non essendo in grado di aggiornare da Svn quando ho modifiche senza commit), e ha rovinato davvero male quando cercavo di rebase su un evento di ramificazione strano in Svn (quindi non farlo) , ma a parte questo, nessun problema. –

2

Sì, è necessario utilizzare una "versione equipaggio" recente di Mercurial, vedere la pagina CrewRepository nel wiki Mercurial.

Quando Mercurial 1.3 viene rilasciato il 1 luglio, hgsubversion dovrebbe iniziare a mantenere un ramo stabile. Almeno questa è la parola su IRC (#hgsubversion su irc.freenode.net).

+0

ooh ahh. Allora guardo verso l'1 luglio. –

+0

dohhwww, sembra che questo non sia vero per hsubversion; l'estensione "convert" è la cosa che apparentemente è stata aggiunta/rilasciata –

+0

L'estensione convert è quella che viene spedita con Mercurial (ed è stata spedita per molto tempo). Mi dispiace che hsubversion non abbia ancora rilasciato una versione stabile, apparentemente hanno ottenuto una riscrittura più grande di quanto pensassero al momento in cui ho risposto a questa domanda. –

3

Ho appena iniziato a lavorare con l'opzione 4, hgsvn. Nonostante ciò che la pagina Mercurial dice, hgsvn 0.1.7 supporta spingendo indietro al repository SVN.

Il mio caso d'uso è molto semplice: voglio solo la possibilità di avere filiali locali (in questa fase). Il flusso di lavoro elencato nella pagina hgsvn è esattamente quello che ho usato e finora non ha infranto nulla.

3

Mi piacerebbe seconda opzione hgsvn, è piuttosto lento se si vuole rispecchiare un grande repository, ma si può iniziare a revisione vicino al suggerimento (che di solito è quello che si vuole comunque).

Ho trovato repository con mirroring molto robusti con oltre 5000 revisioni. Puoi spingere i changeset indietro se è quello che vuoi.

+0

Lasciatemi aggiungere un suggerimento: attualmente utilizzo mercurial + hgsvn + http://arrenbrecht.ch/mercurial/pbranch/ per contribuire a progetti (open source). Basta trascinare il repository svn in mercuriale per gestire le patch usando pbranch. Quindi comunicate le patch via e-mail ai manutentori del progetto. – wires

0

Ho utilizzato hsubversion per diversi mesi. Potrebbero mancare alcune funzionalità ma è pronto per l'uso di produzione.

OGRE e molti altri hanno deciso di utilizzare hsubversion perché è veloce.