~~SLIDESHOW~~ ====== Sync Ordner mit SVN ? ====== * * Kann man mit Subversion (SVN) seine Arbeitsordner syncen? * Klaus Franken, [[StrukturPunkt.de]] * KNF Kongress 22.11.2009 * ===== Übersicht ===== {{:doku:svndisk_2ws.png|}} ===== 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: - gelöschte Dateien (in SVN) als //gelöscht// markieren - Konflikt-Dateien umbenennen - neue Dateien vom Server holen - neue Dateien als //neu// markieren - Ä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:start|svndisk]]