Advanced SVN – Give SVN a web interface

Install required applications

To do this we will need subversion, libapache2-svn, and of course LAMP stack lamp-server.

# Install lamp-server
sudo apt-get install lamp-server^

# Optional: phpmyadmin and mods for apache
sudo apt-get install libapache2-mod-auth-mysql phpmyadmin
sudo a2enmod vhost_alias rewrite

# Install subversion
sudo apt-get install subversion subversion-tools

# Install libapache2-svn
sudo apt-get install libapache2-svn

Now some more preparation to do.

# SSL
sudo a2enmod ssl

# Regenerate self-signed ssl key if you want
sudo make-ssl-cert generate-default-snakeoil --force-overwrite

Users, folders and groups

Next step we need to add svn usergroups, but not before we fix show all users.

Launch gconf-editor, check “showall” in /apps/gnome-system-tools/users.

Then run Users and Groups in System -> Administration. In Manage Groups, click Add. Name the new group subversion, add yourself and www-data to the member. Log out and log in to activate this.

*Note: all your team members need to be added into subversion group.

The repository

Now, time to create the repository.

sudo mkdir /home/svn
sudo mkdir /home/svn/NEWPROJECTNAME
sudo svnadmin create /home/svn/NEWPROJECTNAME
sudo chown -R www-data:subversion /home/svn/NEWPROJECTNAME
sudo chmod -R 765 /home/svn/NEWPROJECTNAME

# If files under NEWPROJECTNAME/ don't have all group access repeat the previous command again.

Now time to tell apache to set up the access to this repository:

# Add the following content to /etc/apache2/mods-available/dav_svn.conf to make all your repository available. Or add them to each website in /etc/apache2/sites-available

<Location /svn>
 DAV svn
 SVNParentPath /home/svn
 SVNListParentPath On
 AuthType Basic
 AuthName "Subversion Repository"
 AuthUserFile /etc/apache2/dav_svn.passwd
 <LimitExcept GET PROPFIND OPTIONS REPORT>
 Require valid-user
 </LimitExcept>
</Location>

# Restart apache2 after adding the content above
sudo /etc/init.d/apache2 restart

Password protection

# Now, creating the password file.
sudo htpasswd -c /etc/apache2/dav_svn.passwd SVNUSERNAME

# To add more users:
sudo htpasswd /etc/apache2/dav_svn.passwd ANOTHERUSERNAME

# Then you can access to your repository with:
svn co https://hostname/svn/PROJECTNAME PROJECTNAME --username SVNUSERNAME

How to edit grub2 boot order in Lucid Lynx

As everyone knows the new Ubuntu Lucid Lynx is using Grub2 instead Grub1, the setting up process has changed quite a bit.

Now if you have various boot entries and want to add, remove or re-order the boot list, you won’t find /etc/grub/menu.lst. Instead the info is stored in /boot/grub/grub.cfg. But wait, you are not supposed to edit this grub.cfg. Instead you need to go to /etc/grub.d/ folder…

In /etc/grub.d/ folder you will find a list of executables like:

  • 00_header
  • 05_debian_theme
  • 10_linux
  • 20_memory_test
  • 30_os-prober
  • 40_custom

And your boot list will be order by the numbers. In fact, 10_linux gives you the 2 lines of linux (normal and recovery mode), 20_memory_test gives you 2 lines of memory test, 30_os-probers will list whatever other systems you have on your harddisk, and 40_custom is the extra bits you can add/remove.

So, if you want to move your other OS (for example, Windows) to first, then Ubuntu, and remove memory test from the list, you delete file 20_memory_test, and rename the rest files to like this:

  • 00_header
  • 05_debian_theme
  • 10_os-prober
  • 20_linux
  • 30_custom

Now all you need to do is sudo update-grub which update your /boot/grub/grub.cfg and boot list accordingly.