Benutzer-Werkzeuge

Webseiten-Werkzeuge


doku:knf2009-svndisk

~~SLIDESHOW~~

Sync Ordner mit SVN ?

  • Kann man mit Subversion (SVN) seine Arbeitsordner syncen?
  • Klaus Franken, StrukturPunkt.de
  • KNF Kongress 22.11.2009

Übersicht

Ziel / Wunsch

  • mehrere Systeme (Peer to Peer / sternförmig)
  • Plattformen: Linux, Mac OS X, …
  • Sicherheit
  • eigener Server
    • wegen Sicherheit / Datenschutz
  • Konflikterkennung
  • offline
  • History
  • bequem
  • automatisierbar / soll im Hintergrund laufen

vorhandene Projekte

  • Dropbox
  • Mobile Me
  • Teamdrive
  • Powerfolder
  • Wuala

Subversion

  • eigentlich eine Revision Control System, aber…
  • kann 95% von den Wünschen
  • kann man ein Script für die restlichen 5% schreiben?

Theorie

ein Script läuft in einer Schleife und:

  1. gelöschte Dateien (in SVN) als gelöscht markieren
  2. Konflikt-Dateien umbenennen
  3. neue Dateien vom Server holen
  4. neue Dateien als neu markieren
  5. Änderungen hochladen

Praxis

# gelöschtes löschen:
# Beispiel: "!      Klexe/Arcor-Vertragsänderung-090610.pdf"
$SVN stat \
  | $PERL -ne '$_ =~ s/^\!\s+// || next; print $_;' \
  | $XARGS $XARGS_OPT $SVN del
# FIXME: wie ein ganzes Verzeichnis löschen?

# Konflikte beheben (umbenennen):
# Bsp-Zeile: "M      *       17   NEU.txt"
# Erkennung: Konflikt wenn modifiziert (M) und neue Version auf Server (*)
$SVN stat -u \
  | perl -ne '$_ =~ s/^M[\w\s]{6}\*\s*\d*\s*// || next; print $_;' \
  | xargs $XARGS_OPT -I % mv % %-$USER-$HOSTNAME-`date "+%y%m%d-%H%M%S"`

# Updates abholen:
$SVN update

# neues hinzufügen:
# BUG: keine Dateinamen mit "´" oder "`" im Namen
$SVN stat \
  | $PERL -ne '$_ =~ s/^\?\s+// || next; $_ =~ s/\s(.)/\\ $1/g; print $_;' \
  | $XARGS $XARGS_OPT $SVN add

$SVN commit -m "svndisk auto commit"

wer macht mit?

Wunsch:

  • Open Source Projekt
  • Script chefsicher machen
  • GUI ?

Ich stelle:

  • vorhandenes Script
  • Server: Wiki, Mailingliste, Svn…

Mail an Klaus.Franken@StrukturPunkt.de

Projektseite: svndisk

doku/knf2009-svndisk.txt · Zuletzt geändert: 2009-11-23 11:18 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki