Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
21. Okt
Son

Mein SVN und ich

Ich erinnere mich noch gut an den glücklichen Moment vor zwei Jahren, da ich frohen Mutes folgende lustige Regel in mein Makefile drückte:

makefile [Show Plain Code]:
  1. .PHONY: clean
  2. clean:
  3.     rm -f *.c

und dann make clean klimperte. Ich glaub ich habe lange nicht mehr so gekotzt. (Ja, nein, nix mit wiederherstellen.) :roll:

Heute sitze ich wieder an dem Spaß und wieder sehe ich mich mit dem Problem konfrontiert, dass ich von *nix keine Ahnung habe, geschweige denn von den Absurditäten der makefile-Feintüftelung. Eines habe ich aber damals gelernt: Es geht nichts über ein gutes Backup. Die Backuplösung meiner Wahl: Subversion. Leider habe ich mich etwas zu sehr an die Shellerweiterung durch TortoiseSVN gewöhnt – schönes Ding, nur auf unseren Linuxrechnern inner Uni leider nicht zu haben. Besser noch: Es ist gar keine SVN-GUI installiert. Keine Ahnung von der Kommandozeilenversion, aber da beißt man sich eben durch:

Repository im (Benutzer-)Homeverzeichnis erstellen:

  1. $ svnadmin create –fs-type fsfs $HOME/svn

Projekt erstmalig importieren:

  1. $ svn import  /pfad/zum/projekt/  file://$HOME/svn/Projektname/trunk  -m ‘Erstimport’

Lässt man den Kommentar via -m weg poppt nach Bestätigung der Editor der Wahl auf, etwa vim. Kurze Meldung einklimpern (im Falle vom vim via i, Meldung, ESC, :wq), ab die Post. Eigentlich idiotensicher, aber trotzdem noch einmal ein Hinweis zur Güte: Vor dem Import daran denken, alle ungewollten Dateien zu entfernen. Einmal versionierte Dateien werden auch weiterhin versioniert – sämtliche binaries, swapfiles oder coredumps sind dann gut archiviert im Container verstaut. Den Spaß kann man sich auch schenken – einfach vorher aufräumen.

Wenn die Meldung passt, das Projekt von der Platte fegen und via checkout wiederholen:

  1. $ svn checkout  file://$HOME/svn/Projektname

Nun hat man seinen Ordner namens $HOME/Projektname/trunk auf der Platte und das Spiel kann beginnen.

Aktuelle oder spezielle Revision aus dem Repository saugen:

  1. $ svn update

oder

  1. $ svn update -r 17

um Revision 17 anzupumpen, usw. $ svn help update gibt weitere Hinweise.

Änderungen an den lokalen Dateien kann man wie folgt ins Repository schmeißen:

  1. $ svn commit

oder

  1. $ svn commit  -m ‘Meldung’

Nach dem commit ruhig gleich nochmal ein Update ziehen.

Bleiben noch: Geekige News:

  1. $ svn log
  2. $ svn stat
  3. $ svn info

Diese und andere Zusammenfassungen findet man in bunt und schön auch auf dieser Seite.

Das alles ist für sich genommen auch schön und gut, richtig spaßig wird’s aber erst unter Ausnutzung der svn-Properties, insbesondere unter dem Aspekt der Schlüsselwortersetzung. Dafür schlage ich vor die (Benutzer-)globalen Einstellungen zu ändern. Die enstprechende Datei findet sich im Benutzer-Home unter ./.subversion/config; Via vim wäre der Weg also:

  1. $ vim ~/.subversion/config

Dort unter [miscellany] die Zeile enable-auto-props = yes entkommentieren oder einfügen, im selben Abschnitt die global-ignores setzen – keine Sau will Objekt- oder Swapdateien versionieren – und zuletzt unter [auto-props] die Keywords vermerken. Beispiel für C:

  1. [miscellany]
  2. global-ignores = *.o .*~ *~ .#* *.swp ~*
  3. enable-auto-props = yes
  4.  
  5. [auto-props]
  6. *.c = svn:eol-style=native;svn:keywords=Author Id Revision Date
  7. *.cpp = svn:eol-style=native;svn:keywords=Author Id Revision Date
  8. .h = svn:eol-style=native;svn:keywords=Author Id Revision Date
  9. Makefile = svn:eol-style=native;svn:keywords=Author Id Revision Date
  10. makefile = svn:eol-style=native;svn:keywords=Author Id Revision Date

Nun: Prof will seinen Modulheader? Der Dateiname soll drinstehen, die Version und der Author? Prof soll seinen Modulheader kriegen. /* $Id$ */ und beim nächsten commit ist das Brot geschmiert. Die nächste Stufe der Evolution ist dann doxygen, aber das muss ich erst noch in mein makefile knüfteln – das mag mich nämlich nach wie vor nicht. (Keine Ahnung wieso, aber make führt ein recht ausgelassenes Eigenleben was das Anspringen von targets angeht; Keine Ahnung wieso makedepend zwangsläufig vor meinem clean aufgerufen wird. Ist unproduktiv. KA was ich da wieder verbockt habe.)

Btw.: Wer seinen vim etwas pimpen möchte sollte offenbar einen Blick in die Datei $HOME/.exrc werfen (oder diese erstellen). Konfigurationen wie set number, sy on und set tabstop=4 sind ein guter Anfang. Dann kann man in Farbe spielen. ;)

Termintwister 3000

Eine Antwort zu „Mein SVN und ich”

  1. #1~Smithb58

    Hey esto es un gran poste. Puedo utilizar una porcin en ella en mi sitio? Por supuesto ligara a su sitio as que la gente podra leer el artculo completo si ella quiso a. Agradece cualquier manera. defbeeebaf

Hinterlasse eine Antwort

Folgende XHTML-Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>