SVN zu Git: Unterschied zwischen den Versionen

Aus ARTECO Wiki
Zur Navigation springen Zur Suche springen
(Leere Seite erstellt)
 
Zeile 1: Zeile 1:
 +
= Migration von SVN-Repos zu Git =
  
 +
Im Folgenden muß der Text <code><repo></code> durch den Namen des Repos ersetzt werden.
 +
 +
==== 1. Checkout des SVN-Repositorys ====
 +
 +
$ svn co svn://svn.arteco.de/<repo>
 +
 +
==== 2. Sammeln der Commit-Autoren ====
 +
 +
$ cd <repo>
 +
$ svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt
 +
 +
Anschließend die Datei <code>users.txt</code> editieren und den SVN-Nutzern ihren Namen und die E-Mail-Adresse (so wie sie im Git-Repo heißen sollen) zuordnen:
 +
 +
$ cat users.txt
 +
dideldum = Didel Dum <dideldum@arteco.gmbh>
 +
dideldei = Didel Dei <dideldei@arteco.gmbh>
 +
 +
==== 3. Erzeugen eines Git-Repos aus dem SVN-Repo ====
 +
 +
$ cd ..
 +
$ git svn clone --trunk trunk --no-follow-parent -A <repo>/users.txt --ignore-paths='^(?:branches|tags)' --ignore-refs='^refs/remotes/origin/(?!trunk).*$' svn://svn.arteco.de/<repo> <repo>.git
 +
 +
''Hinweis:'' Mit den <code>--ignore-paths</code>- und <code>--ignore-refs</code>-Parametern werden alle Branches und Tags ignoriert. Wenn diese in das neue Git-Repo übernommen werden sollen, dann können diese Parameter weggelassen werden.
 +
 +
Mit einem <code>git log</code> im <repo>.git-Verzeichnis sollten nun schon die Commits zu sehen sein.

Version vom 5. September 2022, 15:42 Uhr

Migration von SVN-Repos zu Git

Im Folgenden muß der Text <repo> durch den Namen des Repos ersetzt werden.

1. Checkout des SVN-Repositorys

$ svn co svn://svn.arteco.de/<repo>

2. Sammeln der Commit-Autoren

$ cd <repo>
$ svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt

Anschließend die Datei users.txt editieren und den SVN-Nutzern ihren Namen und die E-Mail-Adresse (so wie sie im Git-Repo heißen sollen) zuordnen:

$ cat users.txt
dideldum = Didel Dum <dideldum@arteco.gmbh>
dideldei = Didel Dei <dideldei@arteco.gmbh>

3. Erzeugen eines Git-Repos aus dem SVN-Repo

$ cd ..
$ git svn clone --trunk trunk --no-follow-parent -A <repo>/users.txt --ignore-paths='^(?:branches|tags)' --ignore-refs='^refs/remotes/origin/(?!trunk).*$' svn://svn.arteco.de/<repo> <repo>.git

Hinweis: Mit den --ignore-paths- und --ignore-refs-Parametern werden alle Branches und Tags ignoriert. Wenn diese in das neue Git-Repo übernommen werden sollen, dann können diese Parameter weggelassen werden.

Mit einem git log im <repo>.git-Verzeichnis sollten nun schon die Commits zu sehen sein.