Last night I was trying to configure SVN on a server. The setup was that the SVN Repo was on "
srv2" and the frontend and code I wanted to import was on "
I created an NFS share on
srv2 and mounted it on
/mnt/svnroot. The mount worked perfectly and I could touch and remove files from srv1.
So I tried to create a "sites" folder where I wanted to import a site I wanted to version control. This is where I started to have problems… The sollution was to add "nolock,bg" to the mount options on the client. Read on for more details!
Before I continue, a little detail about the setup… The servers mentioned here are "psuedo" (ie not real). For the sake of the example "
192.168.1.2 and "
192.168.1.1. The SVN Server (srv2) has the following...
[user@srv2 ~]$ cat /etc/exports /svnroot 192.168.1.2(rw)
[user@srv2 ~]$ cat /etc/hosts.deny portmap: ALL #ADDED BY NICK lockd:ALL mountd:ALL rquotad:ALL statd:ALL
[user@srv2 ~]$ cat /etc/hosts.allow portmap: srv1 #ADDED BY NICK lockd: srv1 rquotad: srv1 mountd: srv1 statd: srv1
The above shows that the folder
/svnroot is being exported as an NFS share and that access to the services
statd are denied to all, however the allow file grants access to these services for
One srv1, we have the following settings…
[user@srv1 ~]$ cat /etc/fstab # srv2 - svn stuff srv2:/svnroot /mnt/svnroot nfs rw,hard,intr,nolock,bg 0 0
What does this do? Well it mounts the export
srv2 to the local folder
/mnt/svnroot using nfs with the options
rw,hard,intr,nolock,bg. In all honesty - I dont know what the last 2 numbers are for!
Using this line in the
fstab file I can now type (as root I believe)…
[user@srv1 ~]$ mount /mnt/svnroot
If this works then you can browse
/mnt/svnroot as if it was on your local system. Now to use SVN!
[user@srv1 ~]$ svn checkout http://websvn.tigris.org/svn/websvn/trunk websvn --username guest
Once in here, I went into the includes folder and copied distconfig.php to config.php. In config.php I made a few changes to suit my system - the main ones were adding a repository:
and teaching websvn that files ending in .module are actually PHP files:
$extEnscript['.module'] = 'php';
After that it was a simple matter of adding a VHost to bind a domain to my websvn install.
The problems really kicked in after all the above steps when I actually tried to USE SVN. When I tried to SVN to import a project by running this (on
svn mkdir file:///mnt/svnroot/sites -m "Creating sites folder"
… I was presented with an interesting error claiming…
svn nfs cant get exclusive lock
After doing a little research I found an interesting post on woss.name by Byung-chul Lee about how he (or she?) fixed the same issue. The suggestion of adding "
bg,nolock" to the mount options on the client fixed the locking issues! I don't know what the side effects will be though.