SVN-Dokumentenversionskontrolle mit LyX

Flattr this!

Worum geht es denn hier wieder?

LyX erlaubt es automatisch, dass man sein Dokument per SVN, alias Subversion, verwaltet. Coole Sache, denn das ist „Cloudcomputing“ mit echtem Hintergrund, wenn der SVN-Server richtig aufgesetzt und in eigener Hand ist. Ich habe bisher RapidSVN benutzt (ja, ich weiß ihr Puristen, GUI is für DAUs), das ist schön klickibunti und man verkrepelt die Konsolenparameter nicht. Außerdem bleibt die Konsolenhistory schön sauber.

Nun war ich positiv überrascht, als ich bei LyX unter Datei → Versionskontrolle NICHT die Option Registrieren fand, sondern alle anderen SVN-Optionen, die man so nutzt: Einchecken, Auschecken, Verlauf anzeigen,… Lyx scheint wohl die .svn-Ordner zu erkennen. (Anm. Ich hab nach einer Stunde Quelltext lesen nicht die entsprechende Passage gefunden. Flames bitte in die Kommentare.)

Das Problem

Freudig erregt klickte ich auf eine der Schaltflächen und bekam folgende Fehlermeldung:

Bei der Ausführung des Befehls ’svn -m „$DATEINAME.lyx“ > „/tmp/lyxtmpdir.$GENERISCHENUMMER“‚ ist ein Fehler aufgetreten.

Und alles brach erwartungsgemäß ab. Die Lösung ist einfacher, als man denkt, denn ich sah den Wald vor lauter Bäumen nicht. Subversion fehlte:

sudo apt-get install subversion

Hintergund:

RapidSVN nutzt natürlich SVN im Hintergrund, ist ja auch zu erwarten. Allerdings nur libsvn-Gedöns und nicht das Kommandozeilentool an sich, was ich wiederum dachte. Deutlich zu sehen ist das im Synaptic oder via dpkg oder sonst irgendeinem Paketmanager.

…Profit!!!

Nun liegt es ja nahe, auch den aktuellen SVN-Revisionsstand in das Dokument selbst zu übertragen, so weiß man stets, ob die verschickte PDF auch dem aktuellen Dokumentenstatus entspricht. Das ist nicht ganz trivial und bei mir funktioniert dies auch nur so halb. Folgende Schritte sind nötig:

  1. Man wechsle in das Verzeichnis, dass das Dokument/die Dokumente enthält.
  2. Nun muss man SVN erzählen, welche Daten es ausspucken soll, wenn es von LyX/LaTex gefragt wird, was so Revision ist. Da ich ein fauler Hund bin und jedes Kapitel eine Datei ist, will ich das für alle Dateien in jedem Ordner:
    svn propset svn:keywords „Date Id Rev“ -R *
    -R heißt rekursiv für alle Unterordner und ich frage gerne mal Datum, Identifikationsnummer und Revision ab. Theoretisch ist ein Teil davon nicht nötig, kost aber nix. Dies ist übrigens nur einmal nötig, nicht bei jedem Commit oder Update.
  3. In LyX nun den LaTeX-Vorspann ändern. Man nutzt das LaTeX-Paket svninfo, das die aktuelle Revnr. in den Footer schreibt. Uncool, wenn man schon selbst einen hat. Deswegen gebe ich [nofancy] mit an:
    \usepackage[nofancy]{svninfo}
  4. Nun muss man sich eine nette Stelle aussuchen, wo die Versionsnummer rein soll. Dort ein TeX-Feld und diese Befehle einfügen:
    \svnKeyword $Revision:$
    \svnInfoRevision
    Ersterer ist das Makro um den SVN-Stand abzurufen, zweiterer ist die Ausgabe im Text.
  5. PROFIT! Bei jedem neuen Öffnen der Datei wird die Revision geändert und in den Text eingefügt. Sollte das beim ersten Einfügen (oder auch beim zweiten) irgendwie nicht funktionieren, Datei speichern, LyX schließen, im SVN commiten, Updaten, LyX öffnen und neu erstellen.

Das LaTex-Feld im Dokument ändert sich bei jedem Durchlauf, da das Makro ausgeführt wird:
\svnKeyword $Revision: 72 $
Keine Panik, das passt so. Weitere Infos gibts im offiziellen PDF der CTAN Website.

Alternativen

Eleganter scheint es wohl noch mit dem Paket svn zu gehen, allerdings lief das bei mir nie. Wer sich damit beschäftigen will, kann mal diesen Thread lesen und hier ins Paket schauen. Eine Info an mich würde ich mit Respekt und Anerkennung auszeichnen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Rechenaufgabe: * Time limit is exhausted. Please reload CAPTCHA.