Migrace do Gitu: 2. díl - SVN

V předchozím dílu jsme úspěšně migrovali do Gitu CVS repositář. Dnes se podíváme na případ, kdy chceme do Gitu převést SVN projekt.

Pro migraci z SVN jsme použili nástroj svn2git, který vnitřně využívá přikaz git svn . Migrovat lze SVN repositáře s klasickým i nestandardním rozvržením. Nástroj si dobře poradí i s SVN větvemi a tagováním. Výstupem migrace je lokální Git repositář s kompletní historií revizí.

První krok

Instalace a příprava prostředí na Debian systémech.

Instalace prerekvizit: git, git-svn, ruby.


$ sudo apt-get install git-core git-svn ruby rubygems

Vlastní instalace nástroje svn2git, viz dokumentace:


$ sudo gem install svn2git

Druhý krok

Pozn: Druhý krok není nezbytně nutný pro spuštění migrace. Vše se řídí přepínačem --authors, viz dále.

Získání údajů o uživatelých SVN repositáře. Údaje budou při migraci použity jako informace o autorovi Git commitů. Cílem je získání textového souboru ve tvaru uvedeném v příkladu, kde je před symbolem = původní SVN uživatel. Za symbolem = pak jméno a e-mail uživatele, který bude uveden u vzniklého Git commitu.

Soubor authors.txt

novak = Jan Novak  <jan.novak@etnetera.cz>
svoboda = Jan Svoboda <jan.svoboda@etnetera.cz>
novotny = Jan Novotny <jan.novotny@etnetera.cz>

Podobný soubor s autory lze předgenerovat např. takto:


$ svn log -q url-svn-repositare | grep -e '^r' | awk -F'|' '{print $2}' | sort -u | 
sed 's/^ *\(.*\) $/\1 = \1 <USER@DOMAIN.COM>/g' > authors.txt

Následně stačí do souboru doplnit už konkrétní údaje, tj. jméno a e-mail uživatele.

Třetí krok

Samotnou migraci lze spustit příkazem:


$ svn2git url-svn-repositare --verbose --authors cesta-k-souboru-s-autory

Alternativně lze spustit i bez přepínače --authors. Autoři commitů v Gitu pak budou reprezentováni pouze uživateli z SVN.

V případě, že SVN repositář nemá standardní layout, lze vše spustit následovně:


$ svn2git url-svn-repositare --verbose --authors cesta-k-souboru-s-autory
--trunk adresar-trunk --tags adresar-tags

Pokud vše proběhlo bez chybových hlášení, měl by být nyní v aktuálním adresáři přítomen podadresář .git.

Čtvrtý krok

Zmigrovaný repositář lze publikovat např. na GitHubu. Po vytvoření účtu a repositáře lze vše na server přesunout následujícími příkazy:


$ git remote add origin git@github.com:UZIVATEL/PROJEKT.git
$ git push -u origin master

Pátý krok

Začištění a kontrola:

  • Kontrola popř. vytvoření souboru .gitignore.
  • Provést checkout odpovídající větve v Gitu a porovnat s původním workspacem.

Možné problémy

Selhaní migrace pří použití přepínače --authors může být způsobeno nekompletním souborem se všemi jmény autorů. Zkontrolujte tedy, zda máte v souboru s autory všechna uživatelská jména z SVN repositáře.

Migrace do Gitu - seriál

Zdroje

Článek obsahuje 2 komentáře

  • koukal

    1
    preklep Čtvrý krok
  • Lukáš Voborský

    2
    Opraveno, díky za upozornění.