Schlagwort-Archiv: svn

svn relocate im Terminal

Problem:
Man hat ein SVN Repository bei welchem die URL gewechselt wurde

Lösung:
Am besten löst man das mit der Kommandozeile.

Zuerst wechselt man in den ausgecheckten Projektordner und findet die aktuelle URL heraus.

cd /pfad/zum/projekt
svn info

Ich habe beispielsweise den Sourcecode von Magento 1.6 hier liegen, die dortige Ausgabe zeigt

Pfad: .
URL: http://svn.magentocommerce.com/source/branches/1.6
Basis des Projektarchivs: http://svn.magentocommerce.com/source
UUID des Projektarchivs: ee4975a1-dc2a-0410-ac7a-f60e980b784d
Revision: 165969
Knotentyp: Verzeichnis
Plan: normal
Letzter Autor: vladimir.pelipenko
Letzte geänderte Rev: 140935
Letztes Änderungsdatum: 2012-01-11 15:01:14 +0100 (Mi, 11. Jan 2012)

Wichtig ist hier die „URL: “ Zeile.
Nun zur Handhabung von svn ein Auszug aus der Hilfe

switch (sw): Update the working copy to a different URL.
usage: 1. switch URL[@PEGREV] [PATH]
2. switch --relocate FROM TO [PATH...]

Daraus resultiert im Magento Beispielfall folgender Befehl

svn switch --relocate http://svn.magentocommerce.com/source/branches/1.6 http://mein.neuer.pfad/source/branches/1.6

Mittels svn info kann das Ergebnis überprüft werden.

SVN Repos zu GITolite konvertieren unter Debian

Problem:
Ich habe einige SVN Repos, die nun ins GIT rüber sollen.

Lösung:
Verwendung von svn2git zur Migration. Nachfolgend wird svn2git beschrieben.
Alternativ kann auch SubGIT gute Dienste leisten.

Ich installiere also zuerst folgende Pakete auf dem Zielsystem

apt-get install git-core git-svn ruby rubygems

Nach der Installation folgen folgende Befehle zur Installation von svn2git

# sources hinzufügen
gem sources -a http://gems.github.com


gem install nirvdrum-svn2git

Im Anschluss ist svn2git nutzbar.
Man sollte lokal einmal das zu konvertierende SVN Projekt komplett auschecken. Ich hatte bei der Anwendung von svn2git und git clone svn jeweils den gleichen Fehler erhalten. Dieser war verschwunden nachdem ich das Projekt einmal ausgecheckt hatte.

!! Der Apache bzw das zuständige WebDAV Modul hat bei vielen Dateien im Repo ein ernsthaftes Overhead Problem weil für jedes File eine Anfrage gestellt werden muss. Es bietet sich also an, wenn möglich, das SVN Protokoll (svn://) bzw. lokal das File Protokoll (file://) zu nutzen !!

Die genutzten Authoren kann man in den ausgecheckten Projekten mit folgenden Einzeilern rausfinden:

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > /tmp/authors-transform.txt

bzw.

svn log --xml | grep author | sed 's_^.*>(.*)<.*$_1_' | sort --unique > authors-transform-from-book.txt

Die beiden txt Dateien sollte man dann zusammenführen und Dubletten bereinigen.

svn2git erwartet das Author Mapping unter ~/.svn2git/authors, wenn die Datei an anderer Stelle liegt, muss das gesondert angegeben werden.

Nun kann man den Prozess anstoßen

# erstelle arbeitsordner
mkdir -p /tmp/svn2git/
# wechsel nach arbeitsordner
cd /tmp/svn2git

Den nachfolgenden Befehl sollte nur wenn nicht anderes möglich, mit dem http Protokoll genutzt werden!! Siehe obiger Hinweis

# svn2git im verbose mode & tee -a
svn2git -v http://my.svn.host.example.com/project1 | tee -a /tmp/projekt1-svn2git.log

Wie man im Terminal (oder dem erzeugten Log) sehen kann, werden ausser dem Klonen noch einige Arbeiten am Repo durchgeführt.

Im Anschluss sollte man noch .gitignore erstellen falls nötig

# erst zeigen lassen ob nötig
git svn show-ignore -i trunk
# die datei .gitignore erstellen, wenn obiger Befehl etwas ausgibt
git svn create-ignore -i trunk > .gitignore

Will man nun das migrierte Projekt in zB Gitolite überführen, lohnt es sich das Projekt zuvor anzulegen und die im Ordner Projekt1.git befindliche gl-conf zu sichern. Das Projekt kann man dann wieder auf dem Filesystem löschen, wir benötigen nur die gl-conf.

In den Repository Ordner von Gitolite kann nun das Projekt reingeclont werden, im Anschluss muss nur die gl-conf wieder in den Ordner überführt werden.


git clone --bare ./ /pfad/zum/repo/Projekt1.git

Happy Coding!

Integrierter SVN Client für Gnome3

Problem:
Ich möchte eine SVN Client Integration alla Tortoise für meinen Gnome Desktop

Lösung:
Im Debian Repository findet man verschiedene Module von „rabbitvcs“

Ich installiere also folgende Pakete incl. Abhängigkeiten

apt-get install rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli subversion git-core

Nun muss man den Nautilus noch beenden „nautilus –quit“ und schon ist auch das Contextmenü beim nächsten Aufruf mit den Rabbitvcs Einträgen bestückt und kann für SVN und GIT eingesetzt werden.