Von Subversion zu Git umziehen: Unterschied zwischen den Versionen
|  (→Links) | |||
| (47 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
| == | == Voraussetzungen == | ||
| [ | Es wird ein Case-Sensitives-Dateisystem benötigt, weshalb Linux (auch in VM) notwendig ist. | ||
| Folgender Check  | |||
| <pre> | |||
| java -jar svn-migration-scripts.jar verify | |||
| </pre> | |||
| liefert unter Windows nämlich folgende Warnung: | |||
| <pre> | |||
| You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss. | |||
| </pre> | |||
| Siehe dazu auch [https://bitbucket.org/atlassian/svn-migration-scripts/issues/1/case-insensitive-warning-on-windows-ntfs https://bitbucket.org/atlassian/svn-migration-scripts/issues/1/case-insensitive-warning-on-windows-ntfs] | |||
| == Installation benötigter Tools == | |||
| === Java (OpenJDK 9) === | |||
| <pre> | |||
| sudo apt-get install openjdk-9-jdk openjdk-9-demo openjdk-9-doc openjdk-9-jre-headless openjdk-9-source  | |||
| </pre> | |||
| === Git === | |||
| ==== PPA-Repository ==== | |||
| <pre> | |||
| sudo add-apt-repository ppa:git-core/ppa | |||
| </pre> | |||
| ==== Pakete installieren ==== | |||
| <pre> | |||
| sudo apt-get update && sudo apt-get install git git-svn | |||
| </pre> | |||
| === Subversion === | |||
| <pre> | |||
| sudo apt-get install subversion | |||
| </pre> | |||
| === svn-migration-scripts === | |||
| ==== Download ==== | |||
| [https://bitbucket.org/atlassian/svn-migration-scripts/downloads/ https://bitbucket.org/atlassian/svn-migration-scripts/downloads/] | |||
| ==== Validation ==== | |||
| Damit ''Subversion'' richtig erkannt wurde, war noch eine Änderung in <code>~/.bashrc</code> notwendig: | |||
| <pre> | |||
| vi ~/.bashrc | |||
| </pre> | |||
| Und am Ende der Datei dann folgende Zeile hinzufügen: | |||
| <pre> | |||
| export LANG=C | |||
| </pre> | |||
| Danach sollte der Aufruf des folgenden Befehles | |||
| <pre> | |||
| java -jar ~/GitMigration/svn-migration-scripts.jar verify | |||
| </pre> | |||
| eine Ausgabe wie  | |||
| <pre> | |||
| 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 | |||
| </pre> | |||
| erzeugen. | |||
| == Autorendatei erstellen == | |||
| <pre> | |||
| java -jar ~/svn-migration-scripts.jar authors https://<svn-repo>/<project> <user> <password> > authors.txt | |||
| </pre> | |||
| == SVN Repository klonen == | |||
| === Möglichkeit 1 über ''clone'' ===  | |||
| ==== Standard Layout ==== | |||
| <pre> | |||
| git svn clone --username <svn user> --stdlayout --authors-file=../authors.txt https://<svn-repo>/<project> <git-repo-name> | |||
| </pre> | |||
| ==== Non Standard Layout ==== | |||
| <pre> | |||
| 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> | |||
| </pre> | |||
| === Möglichkeit 2 über ''fetch'' === | |||
| <pre> | |||
| git svn init --username <svn user> \ | |||
| --trunk=/trunk \ | |||
| --branches=/release/*/* \ | |||
| --branches=/refactoring/* \ | |||
| --tags=/tags \ | |||
| https://<svn-repo>/<project> <git-repo-name> | |||
| </pre> | |||
| <pre> | |||
| cd <git-repo-name> | |||
| git config svn.authorsfile ../../authors.txt  | |||
| </pre> | |||
| <pre> | |||
| [core] | |||
| 	repositoryformatversion = 0 | |||
| 	filemode = true | |||
| 	bare = false | |||
| 	logallrefupdates = true | |||
| [svn-remote "svn"] | |||
| 	url = https://<svn-repo>/<project>/<git-repo-name> | |||
| 	fetch = trunk:refs/remotes/origin/trunk | |||
| 	branches = release/*/*:refs/remotes/origin/release/*/* | |||
| 	branches = refactoring/*:refs/remotes/origin/refactoring/* | |||
| 	tags = tags/*:refs/remotes/origin/tags/* | |||
| [svn] | |||
| 	authorsfile = ../../authors.txt | |||
| </pre> | |||
| <pre> | |||
| git svn fetch | |||
| </pre> | |||
| === Checks === | |||
| Danach in das Verzeichnis <code><git-repo-name></code> wechseln und mit | |||
| <pre> | |||
| git branch -r  | |||
| </pre> | |||
| überprüfen, ob alle Branches übernommen wurden. | |||
| == Branches konvertieren == | |||
| Im Projektverzeichnis kann mit folgendem Befehl angezeigt werden, welche Änderungen vorgenommen werden würden (Trockenlauf): | |||
| <pre> | |||
| cd <git-repo-name> | |||
| java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --no-delete | |||
| </pre> | |||
| Erst durch Anhängen von <code>--force</code> werden die Änderungen tatsächlich ausgeführt: | |||
| <pre> | |||
| java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force --no-delete | |||
| </pre> | |||
| == Lokales Repository nach Bitbucket pushen == | |||
| <pre> | |||
| git remote add origin https://<user>@bitbucket.org/<user>/<repo>.git | |||
| </pre> | |||
| <pre> | |||
| git push -u origin --all | |||
| git push --tags | |||
| </pre> | |||
| == Git Befehle == | |||
| === Dateien eines Branches auflisten === | |||
| <pre> | |||
| git ls-tree -r --name-only <branch> | |||
| </pre> | |||
| == Links == | |||
| [https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Zu-Git-umziehen 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/ 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/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/07/migration-von-subversion-zu-git-die-konvertierung/] | |||
| [http://blog.seibert-media.net/blog/2014/07/09/migration-von-subversion-zu-git-die-synchronisation/ http://blog.seibert-media.net/blog/2014/07/09/migration-von-subversion-zu-git-die-synchronisation/] | |||
| [https://blog.seibert-media.net/blog/2014/08/22/migration-von-subversion-zu-git-das-git-repository-teilen/ https://blog.seibert-media.net/blog/2014/08/22/migration-von-subversion-zu-git-das-git-repository-teilen/] | |||
| Zurück zu [[Git Server (Linux)#Umziehen|Git Server]] | Zurück zu [[Git Server (Linux)#Umziehen|Git Server]] | ||
Aktuelle Version vom 2. März 2018, 12:44 Uhr
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
Möglichkeit 1 über clone
Standard Layout
git svn clone --username <svn user> --stdlayout --authors-file=../authors.txt https://<svn-repo>/<project> <git-repo-name>
Non Standard Layout
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>
Möglichkeit 2 über fetch
git svn init --username <svn user> \ --trunk=/trunk \ --branches=/release/*/* \ --branches=/refactoring/* \ --tags=/tags \ https://<svn-repo>/<project> <git-repo-name>
cd <git-repo-name> git config svn.authorsfile ../../authors.txt
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [svn-remote "svn"] url = https://<svn-repo>/<project>/<git-repo-name> fetch = trunk:refs/remotes/origin/trunk branches = release/*/*:refs/remotes/origin/release/*/* branches = refactoring/*:refs/remotes/origin/refactoring/* tags = tags/*:refs/remotes/origin/tags/* [svn] authorsfile = ../../authors.txt
git svn fetch
Checks
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 --no-delete
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 --no-delete
Lokales Repository nach Bitbucket pushen
git remote add origin https://<user>@bitbucket.org/<user>/<repo>.git
git push -u origin --all git push --tags
Git Befehle
Dateien eines Branches auflisten
git ls-tree -r --name-only <branch>
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