SVN zu Git: Unterschied zwischen den Versionen
Alex (Diskussion | Beiträge) (Leere Seite erstellt) |
Sven (Diskussion | Beiträge) |
||
| (8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | = Migration von SVN-Repos zu GitLab = | ||
| + | Eine weitere (allgemeine) Anleitung ist hier zu finden: https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git | ||
| + | |||
| + | Im Folgenden muß der Text <code><repo></code> durch den Namen des Repos ersetzt werden. | ||
| + | |||
| + | ==== Checkout des SVN-Repositorys ==== | ||
| + | |||
| + | $ svn co svn://svn.arteco.de/<repo> | ||
| + | |||
| + | ==== 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> | ||
| + | |||
| + | ==== Erzeugen eines lokalen 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 | ||
| + | |||
| + | Beispielhaft kann dieser Befehl dann so aussehen | ||
| + | $ git svn clone --ignore-paths='^(?:branches|tags)' --ignore-refs='^refs/remotes/origin/(?!trunk).*$' svn://svn.arteco.de/Privattaster --authors-file=Privattaster/users.txt --prefix "" Privattaster.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. | ||
| + | |||
| + | ==== Erzeugen eines GitLab-Repos ==== | ||
| + | |||
| + | * Öffnen von GitLab im Browser und anmelden. | ||
| + | * Button "New project" drücken. | ||
| + | * "Create blank project" auswählen. | ||
| + | * Namen und Besitzer (z.B. Gruppe "arteco") setzen. | ||
| + | * Der Default-Branch soll "master" heißen. Dazu muss das Häkchen bei "mit README initialisieren [...]" weggenommen werden. | ||
| + | |||
| + | ==== Zuordnen des GitLab-Repos zum lokalen Git-Repo ==== | ||
| + | |||
| + | $ cd <repo>.git | ||
| + | $ git remote add origin https://git.arteco.de:617/arteco/<repo>.git | ||
| + | |||
| + | ==== Übertragen aller Commits aus dem lokalen Git-Repo zu GitLab ==== | ||
| + | |||
| + | $ git push -u origin --all | ||
| + | |||
| + | = SVN-Repo auf "read only" setzen = | ||
| + | |||
| + | '''Optional:''' Anschließend kann das SVN-Repo auf dem Server read-only gesetzt werden: | ||
| + | |||
| + | Anmelden auf space.arteco.de und root werden. | ||
| + | |||
| + | # cd /srv/svnserve/repos/<repo>/hooks | ||
| + | # ln -s ../../read-only-hook pre-commit | ||
Aktuelle Version vom 18. Dezember 2024, 13:37 Uhr
Inhaltsverzeichnis
Migration von SVN-Repos zu GitLab
Eine weitere (allgemeine) Anleitung ist hier zu finden: https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git
Im Folgenden muß der Text <repo> durch den Namen des Repos ersetzt werden.
Checkout des SVN-Repositorys
$ svn co svn://svn.arteco.de/<repo>
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>
Erzeugen eines lokalen 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
Beispielhaft kann dieser Befehl dann so aussehen
$ git svn clone --ignore-paths='^(?:branches|tags)' --ignore-refs='^refs/remotes/origin/(?!trunk).*$' svn://svn.arteco.de/Privattaster --authors-file=Privattaster/users.txt --prefix "" Privattaster.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.
Erzeugen eines GitLab-Repos
- Öffnen von GitLab im Browser und anmelden.
- Button "New project" drücken.
- "Create blank project" auswählen.
- Namen und Besitzer (z.B. Gruppe "arteco") setzen.
- Der Default-Branch soll "master" heißen. Dazu muss das Häkchen bei "mit README initialisieren [...]" weggenommen werden.
Zuordnen des GitLab-Repos zum lokalen Git-Repo
$ cd <repo>.git $ git remote add origin https://git.arteco.de:617/arteco/<repo>.git
Übertragen aller Commits aus dem lokalen Git-Repo zu GitLab
$ git push -u origin --all
SVN-Repo auf "read only" setzen
Optional: Anschließend kann das SVN-Repo auf dem Server read-only gesetzt werden:
Anmelden auf space.arteco.de und root werden.
# cd /srv/svnserve/repos/<repo>/hooks # ln -s ../../read-only-hook pre-commit