====== Subversion ====== Subversion is currently the most popular version control system. We will show you how to setup Subversion on you server in no time. apt-get install subversion subversion-tools I choose to store all of my Subversion repositories inside ''/home/svn'' where every project has its own folder. Create user and group called svn with a home directory in ''/home/svn'' that can not log in on the sysem mkdir /home/svn adduser --system --group --home /home/svn --no-create-home --disabled-login svn chown -R svn:svn /home/svn/ To create a new repository named ''project1'' enter: svnadmin create /home/svn/project1 Edit ''/home/svn/project1/conf/svnserve.conf'' and uncomment anon-access = none auth-access = write password-db = passwd Edit ''/home/svn/project1/conf/passwd'' and enter usernames and passwords [users] username1 = password1 username2 = password2 Change ownership of ''/home/svn'' to user svn chown svn:svn -R /home/svn You will probably have to **chown** every new repository you create. To be able to access the repository from another computer we need to setup ''svnserve''. Create a new file ''/etc/init.d/svnserve'' and paste this into it: #!/bin/sh -e ### BEGIN INIT INFO # Provides: subversion # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop subversion server ### END INIT INFO # # svnserve - brings up the svn server so anonymous users can access svn # # Get LSB functions . /lib/lsb/init-functions . /etc/default/rcS SVNSERVE=/usr/bin/svnserve SVN_USER=svn SVN_GROUP=svn SVN_REPO_PATH=/home/$SVN_USER/ # Check that the package is still installed [ -x $SVNSERVE ] || exit 0; case "$1" in start) log_begin_msg "Starting svnserve..." umask 002 if start-stop-daemon --start \ --chuid $SVN_USER:$SVN_GROUP \ --exec $SVNSERVE \ -- -d -r $SVN_REPO_PATH; then log_end_msg 0 else log_end_msg $? fi ;; stop) log_begin_msg "Stopping svnserve..." if start-stop-daemon --stop --exec $SVNSERVE; then log_end_msg 0 else log_end_msg $? fi ;; restart|force-reload) "$0" stop && "$0" start ;; *) e cho "Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}" exit 1 ;; esac exit 0 Make the script executable chmod +x /etc/init.d/svnserver This is our init script for starting Subversion server. Since we want this script to run on every boot, we need to add it to the default run levels update-rc.d svnserve defaults Run the Subversion server update-rc.d svnserve start Change the firewall so we accept incoming connections on port 3609. You can now checkout your repository from another machine using ''svn co svn://atlantis.example.com/project1''.