Jak převést Subversion repository do Mercurialu?
Používal jsem dva způsoby:
-
pomocí příkazu hg convert o tom jsem psal tady: http://vondrnotes.blogspot.cz/2012/07/jak-prevest-subversion-repo-do.html
-
pomocí HgSubversion o tom budu psát tady
Abych to stručně shrnul, tak 'hg convert' je jednoduchý spolehlivý způsob, který by většinou mohl bohatě stačit. (Spolehlivě mi převedl i 80 GB repo všechny branche a vééélmi velkou historii)
'HgSubversion' je trošku složitější a zdá se mi a může s tím být o trochu víc problémů. Na druhou stranu je o něco chytřejší a když se to zadaří, tak je výsledek lepší. (například commity jsou seřazeny správně podle data ve všech branchí, hg convert totiž udělá všechny commity z jedné branche, pak všechny commity z druhé atd.)
Jak převést Subversion repository do Mercurialu pomocí HgSubversion
-
Instalovat podle http://mercurial.selenic.com/wiki/HgSubversion
-
hg init (create repository)
-
V repositari upravit soubory:
Do .hg/hgrc dát
[paths]
default = https://muj-svn-server/moje/cesta/k/svn/repu
[auth]
bb.prefix = https://muj-svn-server/moje/cesta/k/svn/
bb.username = moje.jmeno
bb.password = moje.heslo
Poznámka - Jak se vyhnout heslu v plaintextu:
-
SSL certifikát k svn (jen pokud je potřeba)
Tohle musí být v 'userhome = ~/.hgrc (~/mercurial.ini)' - kvůli certifikátům pro svn
[hostfingerprints]
muj-svn-server = mu:j0:fi:ge:r0:pr:in:t0:b7:05:0e:81:93:97:22:67:fe:9a:0a:df
Nebo toto, pokud fingerprint nezabere:
[web]
cacerts=
; cacerts je tu pro hgsubversion
-
Pak převést svn do mercurialu
hg pull
(možná to třeba v průběhu spadne, ale to nevadí prostě se znova pustí hg pull a ono to bude pokračovat)
-
A je to :)
hg update
a hurá do mercurialu!
Poznámky
Možný problém, který muže nastat pouze pokud se vývíjí a commituje do svn pomocí hgsubversion
Dá se to rozbít, že pak nejde udělat pull/push a hlásí to něco jako
Pull errors: abort: unknown revision '327d8c072e94f13489ed1ae2aaa4be66584d00b2'
To se může povést opravit příkazem:
hg svn rebuildmeta