Konvertieren von SVN, CVS oder Git Repositories zu Mercurial

Diese Mini-Anleitung ist nur etwas für Leute, denen die Überschrift etwas sagt. Für alle anderen: Geduldet Euch; ich werde in nächster Zeit voraussichtlich einen umfassenderen Artikel zu Mercurial und (D)VCS im allgemeinen verfassen.

Also, zunächst einmal: Mercurial bringt bereits ein Kommando mit, um von einem SVN (Subversion), CVS oder Git Repository alle Daten, inklusive der kompletten Historie, in ein Mercurial Repository konvertieren zu können. Der Befehl heißt schlicht "convert", ist jedoch standardmäßig deaktiviert und steht als Extension zur Verfügung. BTW: Eine Übersicht über (de-)aktivierte Extensions bekommt ihr, wenn Ihr einfach folgende Hilfe aufruft:

hg help extensions

In dieser Ausgabe wird an sich das folgende auch bereits erklärt. Zudem ist hier die Zeile zu "convert" interessant:

convert  Importiert Änderungssätze von anderen Versionsverwaltungssystemen nach Mercurial

Genau was wir wollen also!
Man aktiviert diese Extension, indem man in "seiner" (\~/.hgrc) oder der globalen Mercurial Konfigurationsdatei folgende Zeilen einträgt:

[extensions]
convert =

Kein Fehler: Da kommt in der Tat nichts hinter das "=".

Nun kann man beliebig viele Repositories ganz einfach konvertieren, indem man die HTTP-URL eingibt, oder das lokale Quell- und Zielverzeichnis. Letzteres folgt als Beispiel:

#> hg convert python_spielwiese ../../hg/repos/python_spielwiese
Initialisiere Ziel-Projektarchiv ../../hg/repos/python_spielwiese
Durchsuche Quelle...
Sortiere...
Konvertiere...
1 Initial Import
0 Initial PyDev Checkout

Wie man sieht, übernimmt das Programm die komplette commit-History; in diesem Fall nur 2.
Easy Peasy :)

Teilen per: TwitterEmail


Zeichensatz von Dateinamen unter Linux umwandeln

Ich musste heute wieder einmal mit mkisofs ein ISO File eines Verzeichnisses unter Linux erstellen. Dabei stand ich mal wieder vor dem Problem, das es Dateien aus einem ehemaligen Samba - Share eines Samba Servers waren, dessen Zeichensatz nicht explizit gesetzt war, wodurch der Windows Zeichensatz cp850 verwendet wird. Dieses sieht unter linux nicht nur "ganz toll" aus, nein: Programme wie mkisofs können daher auch solche Dateien nicht wirklich gut verarbeiten.

Ich hatte wie der Autor des Blogeintrages, durch welchen ich letztendlich mal wieder fündig wurde, das Problem das ich das Programm convmv kannte, damit auch schonmal gearbeitet hatte, ich mir den Namen jedoch nicht wirklich gut einprägen konnte.

Unter openSuSe 10.3 heisst das RPM auch einfach convmv.

Um nun Dateien eines Samba - Shares gescheit umzubenennen, gibt man convmv folgende Parameter mit:

convmv -f cp850 -t utf-8 --notest -r ordner

Mit -f wird der aktuelle Zeichensatz angegeben.

-t definiert den Ziel-Zeichensatz.

-r führt das ganze Programm rekursiv auf das ganze Verzeichniss aus und

--notest sorgt dafür, das die Dateien effektiv umbenannt werden.

Achtung:

Wer sich über das Ergebniss nicht ganz sicher ist, der sollte die Option --notest zunächst mal weglassen. Dann Zeigt das Programm nur an was es tun würde.

Teilen per: TwitterEmail