Svn notes
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.
Contents
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