Von Subversion zu Git umziehen: Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(18 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>
Danach in das Verzeichnis <code><git-repo-name></code> wechseln und mit
<pre>
git branch -r
</pre>
überprüfen, ob alle Branches übernommen wurden.


=== Möglichkeit 2 über ''fetch'' ===
=== Möglichkeit 2 über ''fetch'' ===
Zeile 121: Zeile 121:
--branches=/refactoring/* \
--branches=/refactoring/* \
--tags=/tags \
--tags=/tags \
https://leroxcloud.svn.cloudforge.com/jfc jfc
https://<svn-repo>/<project> <git-repo-name>
</pre>
 
<pre>
cd <git-repo-name>
git config svn.authorsfile ../../authors.txt
</pre>
</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 ==
== Branches konvertieren ==
Zeile 130: 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 136: 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>


== Lokales Repository nach Bitbucket pushen ==
== Lokales Repository nach Bitbucket pushen ==
Zeile 144: Zeile 178:
<pre>
<pre>
git remote add origin https://<user>@bitbucket.org/<user>/<repo>.git
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>
</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/

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


Zurück zu Git Server