Tento dokument popisuje kroky potřebné k importu projektu ze systému SVN do Git. Proces zahrnuje instalaci potřebných nástrojů, nastavení a samotný import včetně přenesení historie a větví.
Předpoklady
Před zahájením migrace ověřte, že máte:
- - Přístup k SVN úložišti na Savana.cz.
- - v případě, že si již nepamatujete přihlašovací údaje k jednoltivým SVN repozitářům, lze je jednodušše zjistit nebo nově přenastavit v bývalé administraci hostingu savana.cz. Více informací zde.
- - Ujistěte se, že máte nainstalovaný GIT a
git-svn
, který umožňuje Gitu komunikovat se SVN. - - Pro Windows je součástí instalačního balíčku GIT
- - Na většině distribucí Linuxu lze
git
agit-svn
nainstalovat pomocí balíčku:sudo apt-get install git sudo apt-get install git-svn
- - Pro MacOS je
git-svn
součástí GITu:brew install git
Kroky pro import
1. Zřízení GIT na Webglobe
Vytvořit nový Gitlab účet
Přihlašte se do administrace webhostingu na https://admin.webglobe.cz/auth/login a přejděte do sekce MŮJ ÚČET -> GIT
.
Klikněte na tlačítko Vytvořit nový GitLab účet
a vyplňte formulář.
2. Přidat projekt
Klikněte na tlačítko Přidat projekty
a vyplňte formulář.
3. Přidat uživatele k repozitáři
V sekci MŮJ ÚČET -> GIT
se přepněte na záložku Uživatelé
a vyplňte formulář. V projektu zvolte ten do kterého se bude SVN konvertovat.
Tento krok opakujte podle počtu uživatelů v SVN.
4. Inicializace Git repozitáře
Vytvoř nový adresář, kde budeš provádět konverzi:
mkdir svn-to-git
cd svn-to-git
5. Vytvoření mapy autorů (authors.txt)
Tento krok není povinný, ale vřele ho doporučujeme. Možné problémy:
- - Pokud máte více autorů, všichni budou mít stejnou e-mailovou adresu a budou pod jedn9m
username
. - - V souvislosrti s tím bude nepřesná historie (např. nepřesné jméno autora).
SVN a Git používají různý formát pro autory. Vytvořte soubor authors.txt
a namapujte autory v následujícím formátu:
jmeno_svn_autora = Jmeno Git autora <email@moje-domena.cz>
Nahraďte svnusername
, Git Username
a email@moje-domena.cz
skutečnými hodnotami.
Příklad:
martin = Martin Novak <martin.novak@moje-domena.cz>
josef = Josef Novak <josef.novak@moje-domena.cz>
6. Klonování SVN úložiště do Gitu
Použijte příkaz git svn clone
, který stáhne SVN repozitář do Git:
git svn clone <URL_SVN_Uloziste> --no-metadata -A authors.txt --stdlayout <cilova_slozka>
<URL_SVN_Uloziste>
: URL adresa vašeho SVN úložiště, např.: https://subversion.vas-ucet.savana-hosting.cz/svn-repozitar/.--no-metadata
: Volba, která skryje metadata SVN ve výsledném Git úložišti.-A authors.txt
: Soubor pro mapování autorů mezi SVN a Git.--stdlayout
: Předpokládá standardní strukturu SVN (trunk/
,branches/
,tags/
).<cilova_slozka>
: Název složky, kam se uloží klonovaný projekt.
**Poznámka:** Pokud po dokončení importu je Váš Git repozitář prázdný, je možné, že vaše SVN nemá standardní strukturu. Zkuste proto odstranit volbu `--stdlayout` z příkazu a spustit je znovu.
7. Přepnutí na nově vytvořený Git repozitář
Přejděte do složky s novým Git repozitářem:
cd <cilova_slozka>
8. svn:ignore
Dále je potřeba se postarat o soubor svn:ignore
, pokud jste ho v SVN používali, můžete použít následující příkaz k převedení svn:ignore
na .gitignore
a přidat ho do nového Git repozitáře.
git svn show-ignore > .gitignore
9. Kontrola historie a větví
Po dokončení klonování ověřte historii a větve:
git log --oneline --all
10. Odeslání do vzdáleného Git repozitáře
Přidejte vzdálený Git repozitář a odešlete data:
git remote add origin <URL_Git_repozitare>
git push -u origin --all
git push -u origin --tags
<URL_Git_repozitare>
: URL adresa cílového Git úložiště, např.: https://gitlab.webglobe.com/test-ucet/nazev-git-projektu.
11. Kontrola migrace
Po dokončení importu zkontrolujte, zda:
- - Byly přeneseny všechny commity a historie.
- - Jsou přeneseny všechny větve a tagy.
- - Je správně zobrazen seznam autorů.
Časté problémy
Chybí některé větve nebo tagy
Pokud se některé větve nebo tagy nezobrazují správně, zkuste zkontrolovat strukturu úložiště v SVN a ujistěte se, že je správně nastaven --stdlayout
. Alternativně můžete přenést větve ručně pomocí příkazu git branch
.
Závěr
Proces importu ze SVN do Git je složitější kvůli rozdílům mezi systémy, ale při správném nastavení je možné přenést většinu informací, včetně historie, větví a autorů. Doporučuje se provést důkladnou kontrolu všech dat po importu.