Synchronisation mit SVN

Erstellt am 15.01.2010


Es gibt unzählige Möglichkeiten Verzeichnisse zu synchronisieren. Komplizierter wird es jedoch immer dann, wenn in beide Richtungen synchronisiert werden soll. Die Lösung, die ich hier vorstelle arbeitet mit Subversion (SVN), ist nahezu Betriebssystemunabhängig und bietet nebenbei auch noch die Möglichkeit alte Versionen seiner Dateien jederzeit wiederherstellen zu können. Dieser Artikel soll keine fertig Anleitung sein, sondern vielmehr einen kleinen Einblick in das Thema geben. Über SVN selber gibt es bereits zahlreiche Anleitungen.

Inhalt:

  • Über SVN
  • Szenario
  • Server
  • Client
  • Synchronisieren
  • Vorteile / Nachteile
Über SVN SVN oder auch Subversion ist eigentlich ein Werkzeug für Software Entwickler. Auf einem Server wird in einem so genannten "Repository" der Inhalt eines Projektes (hier: der Inhalt des Ordners) gespeichert. Nun können sich beliebig viele Personen eine Kopie dieses Ordners auf ihrer Festplatte speichern. Diese nennt man Arbeitskopie. Werden Änderungen in diesen Kopien vorgenommen, so ist SVN in der Lage diese zu erkennen und wieder zum Server zu übertragen (Commit). Anders herum kann die Arbeitskopie jederzeit auf den neuesten Stand (des Servers) gebracht werden (Update). Ganz wichtig ist auch, dass jede Änderung am Server gespeichert wird. Eine Anfrage nach folgendem Schema ist also kein Problem: "Zeige mir die Datei xyz, wie sie am 24.12.2008 aussah."

Was heißt das für uns? SVN kann beliebig viele Kopien eines Ordners synchron halten. Jede Änderung an diesen Ordnern auf dem Server wird gespeichert. Wir erhalten also nicht nur eine Synchronisation, sondern auch die Möglichkeit versehentliche Änderungen rückgängig zu machen. Nachteil: Wir brauchen zusätzlich Platz auf dem Server. Bei vielen Änderungen kann das eine ganze Menge werden.

Szenario Sagen wir einmal wir wollen zwei Ordner "Dokumente" zwischen einem PC und einem Notebook (NB) synchron halten. Dazu benötigt man insgesamt 3 Kopien dieses Ordners: Eine auf PC, eine auf NB und dann noch eine auf dem Server, auf den beide PCs zugreifen. Ich werde hier folgendes Szenario beschreiben: Ein Server im Internet, dessen SVN Repository über Http(s) erreichbar ist.

Server Es gibt viele Anleitungen für das Aufsetzen von SVN Servern im Internet. Es ergeben sich für unseren Anwendungsfall dabei keine Besonderheiten. Was man erwähnen sollte: SVN kennt verschiedene Protokolle. Unter anderem http, https und ein eigenes. Für Server im Internet eignet sich https sicherlich gut. Beispiel für eine Anleitung zum installieren eines SVN-Server mit Apache: http://www.petanews.de/blog-news-developer/subversion-mit-apache-22/ Achtung: Ich habe die Anleitung selber nicht getestet.

Client Prinzipiell kann man SVN sehr gut mit der Konsole bedienen. Viele Leute (auch ich) bevorzugen jedoch ein graphisches Programm. Es gibt Clients für Windows, Linux, Mac OS X, Java, usw. Die Arbeitsweise ist immer identisch und die Bedienung meist ähnlich. Hier eine Liste von Clients: http://subversion.tigris.org/links.html#clients

Zur Bedienung: Es gibt 3 Aktionen, die für uns besonders interessant sind:

  • Checkout: Überträgt den gesamten Inhalt des Repositories einmalig auf die Festplatte. Legt zudem ein paar Dateien an, die SVN benötigt.
  • Update: Bringt die Arbeitskopie auf den Stand des Servers.
  • Commit: Überträgt alle lokalen Änderungen an den Server.
Hinweis: Damit Änderungen besser nachvollziehbar sind, verlangt SVN z.B. bei Commit eine "Log-Nachricht". Für eine reine Verzeichnis-Synchronisation ist dies jedoch nicht so wichtig und kann auch leer gelassen werden.

Synchronisieren Zum Synchronisieren reichen unter Linux beispielsweise zwei einfache Befehle.

[Plain] [Html]
   1  cd /pfad/verzeichnis/
   2  svn update
   3  svn commit -m "test"

Dabei sollte man allerdings beachten, dass neu erstellte Ordner nicht automatisch mit übernommen werden.

Vorteile(+) / Nachteile(-): + SVN ist sehr ausgereift und weit verbreitet. + Sehr Universell einstzbar (verschiedene Protokolle, Internet, LAN, ...) + SVN Clients sind für alle wichtigen Betriebssysteme verfügbar. + Auf einem Client wird nur eine URL und ein Benutzer+Passwort zur Konfiguration benötigt. + (z.B. bei WebDAV) Zugriff von überall aus der Welt über Webbrowser möglich. + Möglichkeit ältere Versionen einer Datei zu betrachten (-> Versionskontrolle). - Grundlegende SVN Kenntnisse sinnvoll. - SVN Server benötigt.

Kommentare

Bis jetzt gibt es keine Kommentare.