This page (revision-19) was last changed on 23-Jun-2009 11:02 by ThomasBayen 

This page was created on 03-Oct-2006 21:29 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
19 23-Jun-2009 11:02 11 KB ThomasBayen to previous WikiLink verbessert
18 22-Jun-2009 20:38 11 KB ThomasBayen to previous | to last MercurialVersionControl ==> MercurialVersionControlServer
17 14-Dec-2008 12:00 11 KB Peter Hormanns to previous | to last Tag VersionsVerwaltung
16 10-Oct-2008 15:13 11 KB ThomasBayen to previous | to last svn cleanup in Eclipse (sowie Formatierung)
15 30-Aug-2008 10:36 10 KB JensKapitza to previous | to last svn plugin in eclipse
14 12-Jun-2008 08:30 10 KB ThomasBayen to previous | to last Verlinkung zur neuen Mercurial-Seite
13 06-Jun-2008 17:14 10 KB ThomasBayen to previous | to last guten Artikel über distributes VC gefunden
12 13-May-2008 17:07 10 KB PeterHormanns to previous | to last Subversion Backup
11 01-Feb-2008 15:22 8 KB PeterHormanns to previous | to last Link CVS
10 21-Jan-2008 13:30 8 KB ThomasBayen to previous | to last Tagging
9 24-Nov-2007 09:41 8 KB ThomasBayen to previous | to last Subversive ist offizielles Eclipse-Projekt
8 24-Oct-2007 10:39 8 KB PeterHormanns to previous | to last Formatierung
7 21-Oct-2007 10:36 8 KB ThomasBayen to previous | to last Link zu bzr
6 18-Sep-2007 23:28 8 KB PeterHormanns to previous | to last Comment by PeterHormanns
5 19-Jun-2007 13:24 8 KB ThomasBayen to previous | to last Neues zu SVN: Backups/Dumps
4 16-Dec-2006 23:43 7 KB PeterHormanns to previous | to last KategorieApache
3 25-Oct-2006 23:36 7 KB ThomasBayen to previous | to last Anpassung an neues Wiki
2 25-Oct-2006 21:46 7 KB ThomasBayen to previous | to last Passwortdatei pflegen
1 03-Oct-2006 21:29 7 KB UnknownAuthor to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

! 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
[Online-Handbuch|http://svnbook.red-bean.com/en/1.1/svn-book.html].[http://svnbook.red-bean.com/en/1.1/svn-book.html Online-Handbuch].>>
Eine <<[Kurzanleitung|http://www.schokilade.de/doku.php?id=subversion][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__'''DAV'''>> und <<__SVNPath__'''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.) Sichere Passwortdateien kann man mit dem Kommando __htpasswd2__ erzeugen (siehe manpage).



<<!!==>> 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__,'''trunk''',>> <<__branches__'''branches'''>> und <<__tags__'''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[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.
<<[WebSVN|http://websvn.tigris.org].[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.