Von Subversion zu Git umziehen
Noch in Bearbeitung
Voraussetzungen
Es wird ein Case-Sensitives-Dateisystem benötigt, weshalb Linux (auch in VM) notwendig ist.
Folgender Check
java -jar svn-migration-scripts.jar verify
liefert unter Windows nämlich folgende Warnung:
You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.
Siehe dazu auch https://bitbucket.org/atlassian/svn-migration-scripts/issues/1/case-insensitive-warning-on-windows-ntfs
Installation benötigter Tools
Java (OpenJDK 9)
sudo apt-get install openjdk-9-jdk openjdk-9-demo openjdk-9-doc openjdk-9-jre-headless openjdk-9-source
Git
PPA-Repository
sudo add-apt-repository ppa:git-core/ppa
Pakete installieren
sudo apt-get update && sudo apt-get install git git-svn
Subversion
sudo apt-get install subversion
svn-migration-scripts
Download
https://bitbucket.org/atlassian/svn-migration-scripts/downloads/
Validation
Damit Subversion richtig erkannt wurde, war noch eine Änderung in ~/.bashrc
notwendig:
vi ~/.bashrc
Und am Ende der Datei dann folgende Zeile hinzufügen:
export LANG=C
Danach sollte der Aufruf des folgenden Befehles
java -jar ~/GitMigration/svn-migration-scripts.jar verify
eine Ausgabe wie
svn-migration-scripts: using version 0.1.56bbc7f Git: using version 2.16.2 Subversion: using version 1.9.7 git-svn: using version 2.16.2
erzeugen.
Autorendatei erstellen
java -jar ~/svn-migration-scripts.jar authors https://<svn-repo>/<project> <user> <password> > authors.txt
SVN Repository klonen
git svn clone --username <svn user> \ --trunk=/trunk \ --branches=/release/*/* \ --branches=/refactoring/* \ --tags=/tags \ --authors-file=authors.txt https://<svn-repo>/<project> <git-repo-name>
Danach in das Verzeichnis <git-repo-name>
wechseln und mit
git branch -r
überprüfen, ob alle Branches übernommen wurden.
Branches konvertieren
Im Projektverzeichnis kann mit folgendem Befehl angezeigt werden, welche Änderungen vorgenommen werden würden (Trockenlauf):
cd <git-repo-name> java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git
Erst durch Anhängen von --force
werden die Änderungen tatsächlich ausgeführt:
java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force
Lokales Repository nach Bitbucket pushen
git remote add origin https://<user>@bitbucket.org/<user>/<repo>.git
Links
https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Zu-Git-umziehen
https://blog.seibert-media.net/blog/2014/05/15/migration-von-subversion-zu-git-ueberblick/
http://blog.seibert-media.net/blog/2014/05/16/migration-von-subversion-zu-git-vorbereitungen/
http://blog.seibert-media.net/blog/2014/07/07/migration-von-subversion-zu-git-die-konvertierung/
http://blog.seibert-media.net/blog/2014/07/09/migration-von-subversion-zu-git-die-synchronisation/
Zurück zu Git Server