Installing Subversion on Fedora Core

I’ve been using subversion a lot recently - from using repositories with client development companies to installing it for clients - it seems to be the SVN month.

Here’s how I installed subversion on a machine with Fedora Core 4. For anyone learning or using Subversion, I highly recommend that you read the book.

You may already have subversion installed, if not, just run this:

# yum install subversion
# yum install mod_dav_svn

Then you’ll need to setup at least one repository. I’m going to need multiple repositories that I can use for different clients so I have a bit of extra admin work ahead of me. You can setup as many repositories as you need, but no matter what you’ll need at least one. Here create the folders…

# mkdir /svn
# mkdir /svn/repos
# mkdir /svn/users
# mkdir /svn/permissions

We need to give these folders the proper permissions

# chown -R apache.apache /svn

Then we need to tell subversion to make our first repository.

# svnadmin create /svn/repos/myproject

First, I need to setup a config file for svnserve.

# vi /svn/repos/conf/svnserve.conf

Then, look for variations of the following code and edit it as necessary. By default any anonymous user can access the code so to disable that you must include anon-access = none, just commenting the value out will not prevent anonymous access.

anon-access = none
password-db = passwdfile
realm = My SVN Repository
auth-access = write

The password-db is just a path to a file containing usernames and passwords. You’ll create this file especially for SVN. I create each file inside of the repository conf directory. So, save your changes and then we’ll create said user file.

# vi passwdfile

Enter in something like:

[users]
username = password

Anyway, you’ll need to start the svn server.

# svnserve -d --listen-port=3690

One side note - svnserve just runs and doesn’t have a way to stop besides killing the process. If you make changes to the svnserve.conf or user file you’ll need to restart svnserve.

# killall svnserve

Then, go ahead and test (best to do so on a different machine).

# svn co --username=myusername svn://mydomain/svn/repos/myproject

The system should then ask you for your password. Go ahead and run some tests.

Now, let’s setup apache.

Create a new apache include file that will hold our configurations (You may already have this is subversion was already installed).

# vi /etc/httpd/conf.d/subversion.conf

Now, this file will need to contain something like this to serve the repository through apache:


LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so


DAV svn
SVNPath /svn/repos
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /svn/users/svnpass
Require valid-user
AuthzSVNAccessFile /svn/permissions/svnauthz.conf

Now, this essentially tells apache to load the mods needed for svn. We need to create some files so that this config will work properly. The first is our htpasswd file which I named “/svn/users/svnpass”.

# htpasswd -cb /svn/users/svnpass username password

Next we need to create the svnauth file.

# vi /svn/permissions/svnauthz.conf

Inside we’ll place a list of users who have access to files:


[/]

username = rw

The “rw” states that this user has read/write access to the root repository /.

Restart your web server and you should be done.

service httpd reload
or you can use:
/usr/sbin/apachectl restart - this option outputs better error messages in case you’ve made some syntax mistakes.

Go to your repository and you should see subversion displaying the repo info.

http://yoursite.com/svn/repos/

Code Editors/IDE

Seventy-percent of my work day is spent in a code editor. For years I tried out every single application listed until I finally discovered PSPad. One of the requirements I needed was a ’save all’ option to save all currently open files, and the ability to search & replace in files - open files, or files in a directory.

Now, I have the problem of being split between two apps. For years I’ve also used Zend Studio, and now that I finally have a computer that can handle it’s resource requirements, I can’t decide which app to use. Zend Studio has amazing code completion, even completing classes/functions/variables from other places in the project. It increases productivity and dramatically reduces my trips to the php.net documentation to lookup the exact syntax of a function.

I’ve forced myself to use it exclusively for several weeks now and I’m finally getting used to it. PSPad had the ability to search and replace in files on disk, while Zend Studio only replaces text strings in open files. PSPad also had a toolbar button to toggle word-wrapping. When editing text I frequently need word-wrapping, but when I’m programming I usually turn it off. Zend allows me to toggle it, but only after getting to its location in the preference pane first.