Dies ist eine AlteSeite aus unserem UseModWiki bei Sourceforge.
Bitte überarbeite die Seite, passe die Formatierung für das JSPWiki an und entferne diesen Text.
Vielen Dank!
= Subversion = Subversion ist ein Versionskontrollsystem, mit dem mehrere Entwickler gleichzeitig auf einen Baum von Quelltexten (in einem sog. Repository) zugreifen können. Es tritt an, der Nachfolger des bekannten und bewährten CVS zu sein. (Siehe hierzu auch unsere KurzAnleitungCVS). Die besten Infos hierzu gibt es auf der Homepage des Projektes: http://subversion.tigris.org. Zur Benutzung von CVS und SubVersion speziell unter Debian-Linux ist auch http://qref.sourceforge.net/Debian/reference/ch-vcs.de.html ganz interessant. Auf der Homepage gibt es ein sehr gutes [http://svnbook.red-bean.com/en/1.1/svn-book.html Online-Handbuch]. Eine [http://www.schokilade.de/doku.php?id=subversion Kurzanleitung] haben wir auch im Web gefunden. Obwohl eigentlich die o.g. Dokumentation keinerlei Wünsche offenlässt, gibt es doch immer etwas, was man doch noch dazu sagen kann oder was mir nach Studium der Doku noch unklar war. -- ThomasBayen == Einrichtung eines eigenen Repository == Unter Debian Linux habe ich folgende Pakete installiert: aptitude install subversion libapache2-svn Dann habe ich mit folgenden Befehlen ein Repository angelegt und dafür gesorgt, daß der Apache darauf zugreifen kann. Der Zugriff über den Apache Webserver bietet die komfortableste Möglichkeit, von anderen Rechnern auf das Repository zuzugreifen. mkdir /var/lib/svn mkdir /var/lib/svn/meinprojekt svnadmin create /var/lib/svn/meinprojekt chown www-data.www-data /var/lib/svn/ -R In Datei ''/etc/apache2/mods-available/dav_svn.conf'' die Einträge '''DAV''' und '''SVNPath''' ent-kommentieren, den Pfad zum Repository durch ''meinprojekt'' ergänzen und ggf. den URL-Pfad anpassen. Dann Apache2 neu starten ''(/etc/init.d/apache2 restart)''. Nun kann man schon mit einem Webbrowser unter http://localhost/svn einen Blick in das leere Repository werfen. Je nachdem, was man sonst noch in der Konfigurationsdatei des Apache-DAV-Moduls schreibt, muss man noch eine Benutzerdatei anlegen. Die in der Datei als Beispiel angegebene Basic Authentication ist schon alleine deshalb nicht sicher, weil die Passwörter im Klartext übertragen werden. Sie kann jedoch immerhin dazu dienen, bei einem normalen Projekt ohne große Sicherheitsanforderungen verschiedene Mitarbeiter auseinanderzuhalten. (Wer will, kann das übrigens auch ganz ohne Authentifizierung konfigurieren.) == Tags und Branches == Wer in der Vergangenheit mit Branches und Tags bei CVS gearbeitet hat, wird merken, daß das etwas anders funktioniert. Wer noch nicht damit gearbeitet hat, weil er ein bisschen Angst vor dem Thema hatte, wird überrascht sein, wie leicht das Thema bei Subversion auf einmal zu begreifen ist. Wer nicht weiss, ob er in der Zukunft einmal Tags benötigt, sollte auf jeden Fall auch weiterlesen, weil man beim Anlegen von Repositories ein kleines bisschen vorausschauend arbeiten kann. Frei nach dem KISS-Paradigma gibt es nämlich in Subversion beide Eigenschaften nicht. Dafür kann man sie selber ganz einfach erzeugen, wenn man weiss, daß Subversion auch das kopieren von Dateien versioniert. === Tags === Ein Tag ist eine Kopie eines Repositories zu einem bestimmten Zeitpunkt. Wenn ich will, daß mein heutiger Stand für alle Zeiten als "Version2005" in Erinnerung bleibt, setzte man dazu mit CVS ein "Tag". Da Subversion allerdings auch das Kopieren von Dateien versionsgerecht unterstützt, geht das hier viel einfacher: Ich kopiere das Original-Sourceverzeichnis einfach innerhalb des Repositories an eine andere Stelle. Die Kopie benötigt keinen eigenen Speicherplatz, weil Subversion ja "weiss", daß es nur eine Kopie des jetzigen Versionsstandes ist. Daher ist eine solche Kopie sehr "billig" (bzgl. Speicherverbrauch), d.h. genauso billig, wie das setzen eines Tags in CVS. Da man jederzeit auch einzelne Verzeichnisse auschecken kann, kann man sich nun aussuchen, ob man das Ursprungs-Verzeichnis oder ein beliebiges Kopie-Verzeichnis (also z.B. "Version2005") auschecken will. === Branches === Wenn wir nun eine solche Tag-Kopie verändern und wieder einchecken, haben wir genau das, was man bei CVS einen "Branch" nennt. Fertig! Wenn man darüber nachdenkt, merkt man, wie unkompliziert das eigentlich ist. Will man einen solchen Branch wieder in den Hauptstrang "mergen", sollte man übrigens nochmal die Doku zu rate ziehen, damit man keine Fehler macht und wirklich alle Änderungen übernimmt. === Erkenntnisse hieraus === Hieraus folgt nun die Erkenntnis, daß man, wenn man diese Funktionen nutzen will, Unterverzeichnisse benötigt, in denen man dann die Kopien erzeugt. Daher ist es sinnvoll, sich bei der Erzeugung eines Repositories hierüber Gedanken zu machen und z.B. die Grundverzeichnisse '''trunk''', '''branches''' und '''tags''' anzulegen. Dies wird im Grunde auch in der Doku so gemacht, aber IMO nicht hinreichend erklärt. Man kann diese drei Verzeichnisse als Unterverzeichnisse seines Projekt-Verzeichnisses anlegen, um dem Beispiel des Handbuchs zu folgen. Im Prinzip handelt es sich hierbei jedoch nur um eine Konvention. Man kann also z.B. auch obige Verzeichnisse im root-Verzeichnis oder die Hauptstämme im root-Verzeichnis des Repositories anlegen und die Branches in ''/branches'' usw. -- ThomasBayen == Subversion und Eclipse == Von Haus aus bringt Eclipse Teamfunktionen mit, damit mehrere Entwickler ein Projekt gemeinsam bearbeiten können. Diese integrierten Teamfunktionen bauen auf [CVS] (Concurrent Versioning System) auf. Es gibt aber auch ein Plugin, um Subversion wie CVS in der EclipseIDE benutzen zu können. Hierbei werden alle Vorteile von Subversion genutzt, d.h. wer mit Eclipse z.B. eine Datei verschiebt, erzeugt damit auch eine echte (versionierte) Kopie im Repository (für CVS wäre das eine gelöschte und eine neue Datei). Die Homepage des Plugins ist http://subclipse.tigris.org. Wie in der [Installationsanleitung] beschrieben, wird ein neuer Update-Server eingetragen und dann die neuen Features installiert. Zu beachten ist lediglich, daß man, wenn man Projekte neu anlegt, Probleme hat, die o.a. Verzeichnisstruktur zu erzeugen, weil diese ja nicht Teil des Eclipse-Projektes ist. Daher bietet es sich ggf. an, das Grundgerüst eines neuen Projektes erstmal über die Kommandozeile anzulegen: mkdir /tmp/leer mkdir /tmp/leer/Projektname svn import . http://svn.meinserver.loc/svn/ -m "Projektverzeichnis anlegen" Danach kann man beim Erzeugen eines SVN-Repositories in Eclipse als Name (statt den Projektnamen zu nehmen wie vorgegeben) ''Projektname/trunk'' angeben. (Natürlich sind aber auch Repository-Layouts denkbar, bei denen das nicht nötig ist, wenn z.B. nur die Branches in ein Sonderverzeichnis kommen, die Trunks aber in die von Eclipse vorgegebenen...) == Webinterface == Einer der Vorteile, wenn man das Apache-DAV-Modul benutzt, um Subversion als Server laufen zu lassen, ist die Webschnittstelle, die es gratis dazu gibt. Allerdings kann man damit nur einfach in einer Verzeichnisansicht lesend auf die jeweils aktuelle Revision zugreifen. Eine richtige Weboberfläche ist z.B. [http://websvn.tigris.org WebSVN]. Dieses kann man mit aptitude install websvn libapache2-mod-php4 ''(Das zweite Paket ist nötig, weil der Paketmanager sonst evtl. versucht, webdav für den Apache 1.x zu konfigurieren und das ist blöde, wenn wir den Apache2 eh schon installiert haben.)'' Bei der Konfiguration des Debian-Pakets kann man im ersten Eingabefeld ein Verzeichnis angeben, in dem mehrere Repositories sind und im zweiten einzelne Repositories. Dadurch ist man sehr flexibel bei der Auswahl. Ein Blick auf die URL http://myhost/websvn mit dem Webbrowser und die ganze Pracht von websvn steht zur Verfügung.