BLog

ImprintImpressum
PrivacyDatenschutz
DisclaimerHaftung
Downloads 

Xcode 10 kommt ohne Subversion-Integration

Jetzt muß ich doch tatsächlich alle meine Subversion-Repositories auf dieses verfluchte Git umstellen. Bei Git ist alles so einfach wie Zähneziehen, alles geht immer irgendwie einfach aber eben nicht einfach schmerzfrei. Das beginnt mit der Installation von Git auf meinem FreeBSD-Server. Bei der Standard-Konfiguration von Git in den FreeBSD-Ports fehlt das Subversion-Interface, und daher müssen die Optionen vor der Installation angepaßt werden.

Installation von Git auf dem FreeBSD-Server

cd /usr/ports/devel/git
make config

make install clean

Anlegen des Basis-Verzeichnisses für die Git-Repositories

Ich lege das Basis-Verzeichnis für alle Git-Repositories an, und das ist dann auch sofort das Home-Directory für den noch zu erstellenden git-User:

mkdir -m 0700 /usr/local/git-repositories
pw useradd git -u 954 -c "Git user" -d /usr/local/git-repositories -s /bin/sh

Auf meinem Entwicklungs-Rechner transferiere ich mit dem folgenden Kommando meinen öffentlichen SSH-Schlüssel in das soeben auf dem FreeBSD-Server erzeugte Git-Verzeichnis, so daß Xcode ohne jeweilige Anmeldung über ssh auf die Repositories zugreifen kann.

cat ~/.ssh/id_rsa.pub | ssh -p11 root@server "umask 077 && mkdir -p /usr/local/git-repositories/.ssh && cat >> /usr/local/git-repositories/.ssh/authorized_keys"

Auf dem FreeBSD-Server lege ich dann noch den User git als Owner der Repositories fest:

chown -R git:git /usr/local/git-repositories

Git besteht auf der Benennung von E-Mail-Adressen der Autoren

Das ist vielleicht ein Fuck. Wenn man keine Autoren-Liste mit E-Mail-Adressen bei der Konvertierung von SVN nach Git angibt, dann generiert git-svn einfach welche. Und damit man nun so richtig schön den PITA spürt, wird kurzerhand sowas wie rolf <rolf@498fc946-aa86-e711-b2b2-7071bc633b8c> erzeugt. Spinner, als ob einfach nur rolf nicht ausreichend gewesen wäre. Die willkürliche UUID als Mail-Domain bringt jedenfalls keinerlei Mehrwert, und sieht einfach nur scheiße aus.

Um den von SVN gewohnten minimalistischen Autoren-Eintrag im Commit-Log zu erhalten, muß man das folgende Kommando in allen Working-Copies der unter SVN stehenden Projekte ausführen, die nach Git konvertiert werden sollen:

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

Damit werden die SVN-Commit-Autoren in einer Liste gesammelt, und es wird jeweils die leere E-Mail-Adresse <> angehängt, so daß Git glücklich ist, und uns am Ende nicht ausser Zahnschmerzen auch noch Bauchschmerzen bereitet, ~/svn-authors.txt:

(no author) = rolf <>
Rolf = rolf <>
rolf = rolf <>
root = rolf <>
svn = rolf <>
design = rolf <>

SVN-Repositories in Git-Repositories konvertieren

Die oben erzeugte Liste wird auf den FreeBSD-Server kopiert. Im Basis-Verzeichnis für die Git-Repositories - cd /usr/local/git-repositories - führt man nun für jedes zu konvertierende SVN-Repository die folgende Kommando-Sequenz aus:

git svn clone --shared --preserve-empty-dirs --trunk=trunk \
    --authors-file=/root/svn-authors.txt file:///usr/local/svn-repositories/Project-N

git clone --bare Project-N Project-N.git

rm -r Project-N
chown -R git:git Project-N.git
chmod -R go-rwx Project-N.git

Arbeitskopie auf den Entwicklungsrechner laden und in Xcode öffnen

cd ~/Programmieren/Programme
git clone ssh://git@server:11/~/Polarons.git Polarons

Ich öffne Xcode und lade die Projektdatei der Git-Arbeitskopie:

Copyright © Dr. Rolf Jansen - 2018-09-20 23:23:06

PROMOTION