====== 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 ==== [[http://rabbitvcs.org/]]\\ [[http://wiki.rabbitvcs.org/wiki/install/ubuntu| 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)