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.
- Schritt: Checkout der aktuellen Quellcode-Version des SVN-Servers (Beim Googlecode-Projekt kann der dafür nötige Einzeiler unter Source→Checkout gefunden werden.)
- 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))
- Schritt: Die Datei muss mit Commit noch übertragen und mit einem Kommentar versehen werden. (Bsp.: svn commit -m „Hier kann ein Kommentar stehen.“)
- Nach Eingabe des Befehls sind noch weitere Eingaben nötig:
- Frage nach dem Admin-Passwort
- Frage nach SVN-Benutzernamen und speziellem SVN-Passwort (Das Passwort ist bei Googlecode unter Source→Checkout und dem Link When prompted, enter your generated googlecode.com password. zu finden)
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
PagaVCS
Eclipse
Kommandozeile
Es geht auch von der Kommandozeile in Linux.
svn checkout URL... [PATH]
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)