Von Subversion zu Git umziehen: Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(45 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:




=== Links ===
== 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://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/05/16/migration-von-subversion-zu-git-vorbereitungen/ http://blog.seibert-media.net/blog/2014/05/16/migration-von-subversion-zu-git-vorbereitungen/]

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/

https://blog.seibert-media.net/blog/2014/08/22/migration-von-subversion-zu-git-das-git-repository-teilen/


Zurück zu Git Server