Konverze SVN do Gitu

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 a git-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.

Administrace Webglobe

Klikněte na tlačítko Vytvořit nový GitLab účet a vyplňte formulář.

Administrace Webglobe

2. Přidat projekt

Klikněte na tlačítko Přidat projekty a vyplňte formulář.

Administrace Webglobe

Administrace Webglobe

Administrace Webglobe

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.

Administrace Webglobe

Administrace Webglobe

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.

Administrace Webglobe

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

Administrace Webglobe

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

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.

English Česky Dutch