Von Subversion zu Git umziehen: Unterschied zwischen den Versionen
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 95: | Zeile 95: | ||
=== Möglichkeit 1 über ''clone'' === | === 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> | <pre> | ||
Zeile 104: | Zeile 112: | ||
--authors-file=authors.txt https://<svn-repo>/<project> <git-repo-name> | --authors-file=authors.txt https://<svn-repo>/<project> <git-repo-name> | ||
</pre> | </pre> | ||
=== Möglichkeit 2 über ''fetch'' === | === Möglichkeit 2 über ''fetch'' === | ||
Zeile 148: | Zeile 148: | ||
git svn fetch | git svn fetch | ||
</pre> | </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 == | == Branches konvertieren == | ||
Zeile 155: | Zeile 165: | ||
<pre> | <pre> | ||
cd <git-repo-name> | cd <git-repo-name> | ||
java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git | java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --no-delete | ||
</pre> | </pre> | ||
Zeile 161: | Zeile 171: | ||
<pre> | <pre> | ||
java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force | java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force --no-delete | ||
</pre> | </pre> | ||
Zeile 172: | Zeile 182: | ||
<pre> | <pre> | ||
git push -u origin --all | git push -u origin --all | ||
git push --tags | |||
</pre> | </pre> | ||
== Git Befehle == | == Git Befehle == | ||
=== Dateien eines Branches auflisten === | |||
<pre> | <pre> | ||
git | git ls-tree -r --name-only <branch> | ||
</pre> | </pre> | ||
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