Inhaltsverzeichnis

Hinweise zur Sourcecodeverwaltung mit SVN

Falls noch kein SVN-Packet installiert ist, muss dies im Vorfeld geschehen. Bei Ubuntu sollte sich das Packet mit sudo apt-get install subversion installieren lassen.

  1. Schritt: Checkout der aktuellen Quellcode-Version des SVN-Servers (Beim Googlecode-Projekt kann der dafür nötige Einzeiler unter Source→Checkout gefunden werden.)
  2. Schritt: Eigenen Code in das lokale Repository kopieren (neue Dateien müssen per 'add' zur Source-Code Verwaltung hinzugefügt werden. (Bsp.: svn add test.py))
  3. Schritt: Die Datei muss mit Commit noch übertragen und mit einem Kommentar versehen werden. (Bsp.: svn commit -m „Hier kann ein Kommentar stehen.“)
  4. Nach Eingabe des Befehls sind noch weitere Eingaben nötig:

SVN-Clients für Windows

TortoiseSVN

http://tortoisesvn.tigris.org/

http://lotterfriends.net/index.php/2010/06/14/zugriff-auf-den-google-code-via-subversion-svn/

SVN-Clients für Linux

RabbitVCS

http://rabbitvcs.org/
Ubuntu Installationsanleitung

PagaVCS

https://sourceforge.net/projects/pagavcs/

Eclipse

Kommandozeile

Es geht auch von der Kommandozeile in Linux.

svn checkout URL... [PATH]

http://svnbook.red-bean.com/en/1.0/index.html

SVN-Admin-GUI

http://csd.informatik.uni-oldenburg.de/~hoenicke/svnadmin/
http://sourceforge.net/projects/svndashboard/

Verschiedenes

Wenn Dateien mit svn copy kopiert werden, dann behalten sie ihre Geschichte. Wenn man auf diese Weise ein Unterprojekt startet ist das praktisch dasselbe wie ein Branch.

Wenn das Repository mit git-svn exportiert wird, dann ist die Geschichte aber weg. Grund ist dass git-svn einfach in allen SVN-revisions nach dem Pfad sucht. – Damit kann problemlos der Trunk verfolgt werden, aber bei Branches/Kopien fehlen dann eben alle vorherigen Versionen mit anderem Dateinamen.

Installation eines SVN-Servers auf BSD

Install devel/subversion. The defaults are fine.

 # cd /usr/ports/devel/subversion
 # make install clean

Decide where the files will be stored. /var/svn is used here.

 # setenv SVN_ROOT /var/svn

Create a user svn.

 # pw groupadd svn
 # pw adduser svn -g svn -s /usr/sbin/nologin

Add any users that will use the repositories to the svn group:

 # pw groupmod svn -m username

Create a general repository format.

 # mkdir -p $SVN_ROOT/repos
 # mkdir -p $SVN_ROOT/defaults/trunk
 # mkdir $SVN_ROOT/defaults/branches
 # mkdir $SVN_ROOT/defaults/tags

User svn must own everything.

 # chown -R svn:svn $SVN_ROOT

Add this to /etc/rc.conf

 svnserve_enable="YES"
 svnserve_flags="-d --listen-port=3690 --listen-host 127.0.0.1"
 svnserve_data="/var/svn/repos"
 svnserve_user="svn"
 svnserve_group="svn"

Creating a new project

To create a new project called example:

 # svnadmin create $SVN_ROOT/repos/example
 # svn import $SVN_ROOT/defaults file://$SVN_ROOT/repos/example -m "Initial import"

Change the permissions on the newly created files.

 # chown -R svn:svn $SVN_ROOT/repos/example
 # chmod -R g+w $SVN_ROOT/repos/example

Use a dump-file to export/load the content of a repository:

 # svnadmin dump $SVN_ROOT/repos/example > svndump.file
 # svnadmin load $SVN_ROOT/repos/example < svndump.file

Set permissions. Edit $SVN_ROOT/repos/example/conf/svnserve.conf:

 [general]
 password-db = userfile
 realm = example realm

Create a new file $SVN_ROOT/repos/example/conf/userfile:

 [users]
 user1 = user1_password
 user2 = user2_password

Change permissions on the configuration files.

 chown -R root:wheel $SVN_ROOT/repos/example/conf

The authentication and network acces protocol should be changed to SSH Private Key (http://jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html)