<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog - ShiftEleven &#187; configuration</title>
	<atom:link href="http://shifteleven.com/articles/tag/configuration/feed" rel="self" type="application/rss+xml" />
	<link>http://shifteleven.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 19 Sep 2009 11:19:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-alpha</generator>
		<item>
		<title>Using Subversion to Maintain your Configuration Files</title>
		<link>http://shifteleven.com/articles/2007/01/01/using-subversion-to-maintain-your-configuration-files</link>
		<comments>http://shifteleven.com/articles/2007/01/01/using-subversion-to-maintain-your-configuration-files#comments</comments>
		<pubDate>Mon, 01 Jan 2007 23:03:31 +0000</pubDate>
		<dc:creator>K. Adam Christensen</dc:creator>
				<category><![CDATA[Version Control]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[etc]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://dev.fecalrod.com/?p=22</guid>
		<description><![CDATA[I got this tip from Jerry Jackson who told me about storing all of my configuration files, like .bash_profile or .vimrc, in an etc directory inside of my home directory.  Once the files are in that directory, you could create a subversion repository; and inside of this repository, put the etc directory in that. [...]]]></description>
			<content:encoded><![CDATA[<p>I got this tip from <a href="http://www.jcj.net">Jerry Jackson</a> who told me about storing all of my configuration files, like <code>.bash_profile</code> or <code>.vimrc</code>, in an <code>etc</code> directory inside of my home directory.  Once the files are in that directory, you could create a subversion repository; and inside of this repository, put the <code>etc</code> directory in that.  Once the files are in a repository, you can check out that repository on any machine.  Now you have a way to keep all of your config files easily in sync.</p>
<p><span id="more-22"></span></p>
<h3>Setting Up <code>~/etc</code></h3>
<p>Since <code>/etc</code> contains any configuration file, why not have the home directory mimic this?</p>
<p>So I have moved a bunch of files into <code>~/etc</code>:</p>
<ul>
<li><code>.bash_profile</code></li>
<li><code>.bashrc</code></li>
<li><code>.irbrc</code></li>
<li><code>.subversion/</code></li>
<li><code>.vim/</code></li>
<li><code>.vimrc</code></li>
</ul>
<p>When I moved the files, I renamed them to not include the dot in front of the name, that way the files would not be hidden.</p>
<p>So that everything still works correctly, I make a bunch of symlinks for the files in my <code>etc</code> directory to the home directory, i.e. <code>ln -s ~/etc/bash<em>profile ~/.bash</em>profile</code>.  This is so that the configuration files work like they used to.</p>
<h3>The Subversion Repository</h3>
<p>By moving these files into a directory, that directory can now be put into a repository.  This is the beauty of it all.  Once in a repository, the <code>etc</code> directory can be checked out anywhere.  This means that anytime I want to change a config, like a new wim setting, I can make sure that vim behaves the same no matter what machine I&#8217;m using by committing that change and then performing an update.</p>
<p>Because I&#8217;m using subversion, I can use properties like <code>svn:ignore</code> on something that I don&#8217;t want have shared between my machines.  I committed <code>etc/subversion/</code> because I want to share the <code>config</code> file located in that directory.  As for all other files, I don&#8217;t want to share it.  So i put an ignore of <code>*</code> on that directory.</p>
<p>You can also use <code>svn:externals</code>.  I use <a href="http://tpope.net/">Tim Pope&#8217;s</a> <a href="http://rails.vim.tpope.net/">rails vim</a> file.  He keeps his work in subversion, so by using the externals, I can make sure that I have his most up-to-date work at any time.</p>
<h3>Where To Go From Here</h3>
<p>If you keep a repository of your configuration files, you could also keep script files in there, like perhaps <strong>a script which will create all of your <code>etc</code> symlinks</strong> for you :).  You could also keep a copy of your firefox bookmarks in sync.  The sky&#8217;s the limit.</p>
]]></content:encoded>
			<wfw:commentRss>http://shifteleven.com/articles/2007/01/01/using-subversion-to-maintain-your-configuration-files/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
