Svn notes

From DiLab
Revision as of 09:52, 27 July 2010 by Leo (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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