Svn notes

From DiLab
Revision as of 17:22, 1 October 2010 by Leo (talk | contribs) (SVN client (GUIs))
Jump to: navigation, search

Good start for basic subversion info is at https://help.ubuntu.com/community/Subversion

You may also want to read how to add a group or user to a group.

SVN client (GUIs)

Here is the list of my favorite clients for SVN

  • Rapidsvn for version control and meld for comparing files
sudo apt-get install rapidsvn meld
  • RabbitVCS - inspired by TortoiseSvn, but for Linux. However, if you have large or several repositories checked out in a directory that you are trying to open in nautilus, the latter may hang for a long time while the Rabbit goes through all the subdirectories.

Creating a basic SVN repository

Decide where your repository will be. Private could be under your home, public probably be somewhere else, e.g. at /var/lib/svn/ourproject/. This example creates a repository in /home/svn/myproject/.

sudo mkdir /home/svn
cd /home/svn
sudo mkdir myproject

sudo svnadmin create /home/svn/myproject

cd /home/svn
sudo chown -R www-data:subversion myproject
sudo chmod -R g+rws myproject


Global ignore

  • Where to set the pattern for files to be ignored:

You can modify /etc/subversion/config like this

[miscellany]
global-ignores = *.class *.o tmp


  • How to use a different username for a svn client (for example, rapidsvn)
SVN_SSH='ssh -l username' rapidsvn

Single unix account, multiple users access with public key authorization

Here is a description on how to set up svn on a single unix account and using private-public key authorization for multiple users.

In short: edit .ssh/authorized_keys file by adding lines as follows:

Consider

ssh-rsa AAAABlotsmoregookhere= address@example.com 

as "TYPE KEY COMMENT". Then add the following lines, one prer user:

 command="/path/to/svnserve -t -r /repository/root --tunnel-user=alice",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty TYPE1 KEY1 COMMENT1
 command="/path/to/svnserve -t -r /repository/root --tunnel-user=bob",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty TYPE2 KEY2 COMMENT2

Now you can have users authenticating the svn access with their private/public keys, using a single svn/unix account.

If you do not know how to generate the keys, here is how: Ssh_with_a_private-public_key

Integration with TRAC

You can make TRAC close messages when committing in svn by mentioning the ticket number like "This fixes #17". You will need to find (and install) the appropriate trac-post-commit-hook script for your TRAC version. Here is an example of the /var/svn/myproj/hooks/post-commit file:

#!/bin/sh
REPOS="$1"
REV="$2"
TRAC_ENV="/var/trac/mytrac"
MSG=$(svnlook log -r $REV /var/svn/myproj)
/usr/bin/python /usr/local/bin/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV" -m $MSG