Subversion in my ~/Home

written by edavis on April 4th, 2006 @ 07:43 PM

Today I finished importing my home directory into Subversion. I did this because I needed an easy way to keep files in sync between my desktop and laptop and rsync was not cutting it.

I first thought of this after reading the new O'Rielly book on Safari called Mind Performance Hacks. There is a hack that is about productivity and it talked about setting up a version controlled home directory (half jokingly). It also had a link to Joey's svnhome which got me started.

I did not follow the same ideas that Joey's svnhome had or even $HOME in Subversion, another page I found from Google. Instead I went my own way and am proud to say that it is now working and I have the majority of my files into a subversion repository.

Here is a quick layout, I will be able to get into more details later on, as I test it out. Here is the main repository layout.

https://svn.theadmin.org/home
 * bin/
 * dev/
 * doc/
 * dotfiles/

Each of these corresponds to a folder in my home, other than dotfiles. So ls -l /home/eric provides four folders (tmp is unversioned):

drwxr-xr-x   3 eric eric 4096 2006-04-04 16:37 bin
drwxr-xr-x  15 eric eric 4096 2006-04-04 16:59 dev
drwxr-xr-x  31 eric eric 4096 2006-04-04 22:32 doc
drwxr-xr-x   3 eric eric 4096 2006-04-04 20:46 tmp

The subversion URL for this is to the dotfiles folder aka "https://svn.theadmin.org/home/dotfiles". Inside here I have some svn:excludes but mainly I have my svn:externals to pull from external repositories (or a different path in the same repository). My svn:externals looks like this:

eric@raptor:~$ svn propedit svn:externals .
bin https://svn.theadmin.org/home/bin/
dev https://svn.theadmin.org/home/dev/
doc https://svn.theadmin.org/home/doc/

So when I do a svn update in my home folder, Subversion will first grab my dotfiles area, then will grab my bin, dev, and doc area updating each as it goes. Here is a transcript (note: I have more svn:externals inside of dev/ and doc/)

eric@raptor:~$ svn up
Fetching external item into 'bin'
External at revision 47.
Fetching external item into 'dev'
Fetching external item into 'dev/ARS/support-site'
External at revision 370.
At revision 47.
Fetching external item into 'doc'
Fetching external item into 'doc/T/Todo'
External at revision 26.
At revision 47.
At revision 47.

It is pretty verbose but I will go through and grab all the updates at once. Stay tuned and I will document what I did to set this all up in more detail.

Eric Davis

Post a comment