Freitag, 6. Juni 2014

Exportieren lokales subversion repository nach github

Warum?

Da ich intern bisher auf subversion entwickle, Code aber auf GitHub stellen möchte, brauche ich eine¹ Möglichkeit diese Projekte möglichst kompatibel nach git zu exportieren. git-svn erlaubt diese Nutzung und erhält die Versionshistorie. Eine Re-Integration nach subversion ist ebenfalls möglich.

Die Infos stammen zum Teil aus Tutorial zu git-svn unter http://viget.com/extend/effectively-using-git-with-subversion.

Eine kleine, nette Einführung zu git gibt es unter http://rogerdudler.github.io/git-guide/index.de.html

¹ Erm, ja. Github kann auch via subversion Repositories verwalten. Allerdings müsste man dann das Projekt komplett dort hosten. Die obige Lösung umgeht dies.


git-svn installieren

git-svn ist unter Debian im gleichnamigen Paket zu finden und mittels

$> aptitude install git-svn
zu installieren.
Es ist ratsam vor der ersten Verwendung im .bashrc den Suchpfad für git-svn zu hinterlegen, da Debian das Programm unter /usr/lib/git-core/ installiert.


Exportieren von subversion in git Arbeitsverzeichnis


Das jeweilige Projekt, welches exportiert werden soll, sollte vollständig auf dem Subversionserver vorliegen. Sinnvoll ist es über die URL des Projektes zu gehen. Im Beispiel wäre das https://localhost/svn/trunk/fixit/fixit_tiff, welches auf das fixit_tiff Repository zeigt.

Mit folgendem Kommando erzeugt man im /tmp Directory das neue Git-Arbeitsverzeichnis für fixit_tiff:


$> mkdir /tmp/git
$> cd /tmp/git
$> /usr/lib/git-core/git-svn clone https://localhost/svn/trunk/fixit/fixit_tiff ./fixit_tiff
Zur Überprüfung können wir mit git log anschauen, ob unsere History etc. korrekt übernommen wurde:

$> cd fixit_tiff
$> git log 
commit 92f8cf068d7bdf8e2a39aab8e3db31f3c055bcd4
Author: romeyke <romeyke@c63e1d0e-0205-4395-96c5-23d0ee883611>
Date:   Wed May 28 15:17:12 2014 +0000

    - compiles with debugging code
    - added TIFFGetAllTagListCount () because TIFFGetTagListCount() only works w
    - added TIFFGetAllTagListEntry () because TIFFGetTagListEntry() only works w
    - added print_baseline_tags()
    - added print_required_tags()
    - added check_required()
    - check_*() opens tif-files only in read mode
    - improved logic, because we call check*() explicitely, also after repair
    
    git-svn-id: https://localhost/svn/trunk/

commit dd30cfa15101c61111ce62f6e83b0bfee3cb10bb
…

Übertragen auf github

Auf github sollte schon ein entsprechendes Repository angelegt sein. Zuerst müssen wir git nun mitteilen, daß wir auf einen anderen Master gehen:

$> export yourusername=maxmustermann
$> export yourreponame=fixit_tiff
$> git remote add origin https://github.com/${yourusername}/${yourreponame}.git

Mit folgendem Kommando vollführen wir dann den Export aus unserem obigen git-Arbeitsverzeichnis:

$> git push origin master
Bei Problemen schlage man unter http://stackoverflow.com/questions/12799719/how-to-upload-a-project-to-github nach (Lächeln)

Meine Repos sind unter https://github.com/art1pirat/ zu finden