Keeping your home directory in subversion

When your working and developing on many boxes, either physical computers or SSH-ing into remote servers it can be quite cumbersome to manage all your settings..

So just recently I started using subversion for managing my home directory.. it works great! I can just update, and commit to the central server and I just keep an "svn update" in my .bash_profile. Always in sync!

And.. you get the added benefit of decentralized backups (since its checked out on multiple boxes) and you can revert to a previous version in case you screw up.

Among other things, the repository now contains:

  • .bash_profile
  • .bash_rc
  • All my VIM settings and plugins
  • My SSH settings
  • a public_html folder
  • A dev folder with svn:externals to my most worked-on projects
  • My .netrc
  • A (password protected) sym-link from the dev/ to the public_html/ folder
  • Random shit

So yea, I just wanted to share this thought for people who might be dealing with the same issues.

Web mentions

Comments

  • Jacques Marneweck

    Jacques Marneweck

    I tend to have two setups. A full and basic home directory. The basic gets checked out at webhosts, etc. which I use. The full gets checked out at work and basically ensures that i have some level of sanity with my shells. I'm using svk to do revision control with subversion.
  • fa

    fa

    tried it some years ago and didn't continue for several reasons. a) my two main boxes are win xp b) too much junk in ~ and "my documents" that isn't really worth replicating c) I made some aliases in my bashrc to "get" and "put" it to all hosts via scp easily
  • Evert

    Evert

    fa, yea it won't work that well for non-unix environments.. I'm actually not adding in everything.. just the stuff I really need across server (you can easily ignore patterns) Just scp'ing works.. I just really like the idea of version control. By the way.. you might want to look into rsync instead as for syncing folders, it's often a lot faster.. Evert
  • fa

    fa

    been there, done that As I said, the only file that really has versions because I need it on several host is my .bashrc. and manually checking an alias that displays the version number is less a hassle than version control for 1 file :) I really tried it but I never found the best way between - everything unneeded in version control and - too few and constantly searching stuff most probably it's the mess on all my harddrives, but it just didn't work for me :P
  • Thomas Koch

    Thomas Koch

    I'm very happy with unison: only syncing, no version control. http://www.cis.upenn.edu/~bcpierce/unison/
  • Ben Straub

    Ben Straub

    I just recently completed doing this, and it wasn't very fun, since I keep my bash env for three systems: WinXP at work, my linux web server, and my Mac. I set svn:ignore on ~ to "*", and just added the files that mattered: - a shared .bashrc - my .emacs and .emacs.d (so I have a centrally-located site-lisp) - .vimrc (Yes, I bat for both teams) This works for me so far. I haven't needed anything else, but if I do, it's a simple svn add away.
  • Scott Rider

    Scott Rider

    I keep my home directory on ZFS and use the incredible instantaneous snapshots. May you suffering souls rest in peace !
  • Citeprelt

    Citeprelt

    Greetings, my name is Ryan I just joined <a href=http://hubpages.com/hub/Thrive-Learning-Institute><b>Thrive Institute</b></a> and I really enjoy the online training courses. I'm taking the real estate and wealth management classes and I appreciate being able to plan my schedule the way it works best for me. I am learning a lot about online commerce. Saw something informative about Thrive and eBay as well as the eLibrary stuff they have available via <a href=http://hubpages.com/hub/Thrive-Learning-Institute><b>Thrive Institute’s</b></a> online courses. Are there any other Thrive Institute students in the Seattle area?