<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>yergler.net &#187; git</title>
	<atom:link href="http://yergler.net/blog/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://yergler.net</link>
	<description>Because eventually I&#039;ll be right. Theoretically.</description>
	<lastBuildDate>Wed, 23 May 2012 01:10:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>gsc Bug Fixes</title>
		<link>http://yergler.net/blog/2009/07/25/gsc-bug-fixes/</link>
		<comments>http://yergler.net/blog/2009/07/25/gsc-bug-fixes/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 01:41:27 +0000</pubDate>
		<dc:creator>Nathan Yergler</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[cc]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[gsc]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svn:externals]]></category>

		<guid isPermaLink="false">http://yergler.net/?p=1087</guid>
		<description><![CDATA[I announced gsc earlier this week because it worked for me. If you were brave and cloned the repository to try it out, you undoubtedly found that, well, it didn&#8217;t work for you. Thanks to Rob for reporting the problem with setup.py, as well as a few other bugs. I&#8217;ve pushed an update to the [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://yergler.net/blog/2009/07/21/git-svn-and-svnexternals/">announced</a> <strong>gsc</strong> earlier this week because it worked for me.  If you were brave and cloned the <a href="http://gitorious.org/gsc/">repository</a> to try it out, you undoubtedly found that, well, it <em>didn&#8217;t</em> work for you.  Thanks to Rob for reporting the problem with <code>setup.py</code>, as well as a few other bugs.</p>
<p>I&#8217;ve pushed an update to <a href="http://gitorious.org/gsc/">the repository on gitorious</a> which includes fixes for the <code>setup.py</code> issue, support for some [likely] common Subversion configurations and a test suite.  In addition to the installation issue Rob also reported that wasn&#8217;t able to clone his svn repository with gsc.  Some investigation led me to realize the following cases weren&#8217;t supported:</p>
<ul>
<li><code>svn:externals</code> specified with nested local paths (ie, &#8220;vendor/product&#8221;)</li>
<li>empty directories in the Subversion repository with nothing but <code>svn:externals</code> set on them</li>
</ul>
<p>Both now clone correctly.</p>
<p>One open question is what (if anything) gsc should do when you run it against an already cloned repository.  I&#8217;ve envisioned it purely as a bootstrapping tool but received an email stating that it didn&#8217;t work when run a second time, so obviously it should do <strong>something</strong>, even if that&#8217;s just failing with an error message.</p>
]]></content:encoded>
			<wfw:commentRss>http://yergler.net/blog/2009/07/25/gsc-bug-fixes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>git-svn and svn:externals</title>
		<link>http://yergler.net/blog/2009/07/21/git-svn-and-svnexternals/</link>
		<comments>http://yergler.net/blog/2009/07/21/git-svn-and-svnexternals/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 16:47:17 +0000</pubDate>
		<dc:creator>Nathan Yergler</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[cc]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[gsc]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svn:externals]]></category>

		<guid isPermaLink="false">http://yergler.net/?p=1073</guid>
		<description><![CDATA[UPDATE I&#8217;ve pushed a few bug fixes; see this entry for details. At Creative Commons we&#8217;re a dual-[D]VCS shop. Since we started self-hosting our repositories last year we&#8217;ve been using both Subversion and git. The rationale was pragmatic more than anything else: we have lots of code spread across many small projects and don&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE</strong> I&#8217;ve pushed a few bug fixes; see <a href="http://yergler.net/blog/2009/07/25/gsc-bug-fixes/">this entry</a> for details.</p>
<p>At <a href="http://labs.creativecommons.org">Creative Commons</a> we&#8217;re a <a href="http://code.creativecommons.org">dual-[D]VCS</a> shop.  Since we started <a href="http://labs.creativecommons.org/2008/04/01/version-control-changes/">self-hosting our repositories</a> last year we&#8217;ve been using both <a href="http://en.wikipedia.org/wiki/Subversion_%28software%29">Subversion</a> and <a href="http://en.wikipedia.org/wiki/Git_%28software%29">git</a>.  The rationale was pragmatic more than anything else: we have lots of code spread across many small projects and don&#8217;t have the time (or desire) to halt everything and cut over from one system to the other.  This approach hasn&#8217;t been without it&#8217;s pain but I think that overall it&#8217;s been a good one.  When we create projects we tend to create them in git and when we do major refactoring we move things over.  It&#8217;s also given <strike>recalcitrant staff</strike> me time to adjust my thinking to git.  Adjustments like this usually involve lots of swearing, fuming and muttering.  </p>
<p>As I&#8217;ve become more comfortable with git and its collection of support tools, I&#8217;ve found myself wanting to use <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git svn</a> to work on projects that remain in Subversion.  One issue I&#8217;ve run into is our reliance on <code>svn:externals</code>.  We use externals extensively in our repository which has generally made it easy to share large chunks of code and data, and still be able to check out the complete dependencies for a project and get to work[1].  More than once I&#8217;ve thought &#8220;oh, I&#8217;ll just clone that using git-svn so I can work on it on the plane[2],&#8221; only to realize that there are half a dozen externals I&#8217;d need to handle as well.</p>
<p>Last week I decided that tools like <a href="http://zagadka.vm.bytemark.co.uk/magit/">magit</a> make git too useful not to use when I&#8217;m coding and that I needed to address the <em>&#8220;externals issues</em>&#8220;.  I didn&#8217;t want to deal with a mass conversion, I just wanted to get the code from Subversion into the same layout in git.  I found <a href="http://github.com/gma/git-me-up/tree/master">git-me-up</a> which was close, but which baked in what I assume are Rails conventions that our projects don&#8217;t conform to.  Something like this may already exist, but the result of my work is a little tool, <a href="http://gitorious.org/gsc"><strong>gsc</strong></a> &#8212; &#8220;git subversion clone&#8221;.</p>
<p><strong>gsc</strong> works by cloning a Subversion repository using git svn and then recursively looks for externals to fetch.  If it finds an external, it does a shallow clone of the target (only fetching the most recent revision instead of the full history).  The result is a copy of your project you can immediately start working on.  Of course, it also inherits some of the constraints associated with <code>svn:externals</code>.  If you want to work on code contained in an external (and push it back to the Subversion repository) you may need to check out the code manually[3].  Of course, the beauty of DVCS is that there&#8217;s nothing stopping you from committing to the read-only clone locally and then pushing the changes <a href="http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html">via email</a> to a reviewer.</p>
<p>You can grab <a href="http://gitorious.org/gsc">gsc from gitorious</a>.  There are also installation instructions and basic usage information in the <a href="http://gitorious.org/gsc/mainline/blobs/master/README">README</a>.</p>
<p>fn1. It&#8217;s also led to some sub-optimal software release practices, but that&#8217;s probably a different post.</p>
<p>fn2. Yes, I&#8217;ve actually encountered the &#8220;airplane&#8221; scenario; this either means DVCS advocates are prescient or I&#8217;ve been traveling way too much lately.</p>
<p>fn3. This is true because some repositories spell read-only and read-write access differently; both <a href="http://code.creativecommons.org">CC</a> and <a href="http://www.zope.org/DevHome/">Zope</a> do this, so the <code>svn:externals</code> definitions are often written using the read-only syntax to make sure everyone can make a complete checkout.</p>
]]></content:encoded>
			<wfw:commentRss>http://yergler.net/blog/2009/07/21/git-svn-and-svnexternals/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upgrading WordPress</title>
		<link>http://yergler.net/blog/2008/08/21/upgrading-wordpress/</link>
		<comments>http://yergler.net/blog/2008/08/21/upgrading-wordpress/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 00:33:19 +0000</pubDate>
		<dc:creator>Nathan Yergler</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[wordpres]]></category>

		<guid isPermaLink="false">http://yergler.net/blog/?p=630</guid>
		<description><![CDATA[WordPress 2.6.1 is out. Reading feeds on my flight from IND to PHX this afternoon I ran across the WordPress Automatic Upgrade Plugin (shouldn&#8217;t that be the Automattic?). Nice, but I&#8217;d like to plug my approach to managing WordPress upgrades, which I think is even easier, assuming you&#8217;re OK with minimal command-line interaction. First, install [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wordpress.org/development/2008/08/wordpress-261/">WordPress 2.6.1</a> is out.  Reading feeds on my flight from IND to PHX this afternoon I ran across the <a href="http://techie-buzz.com/wordpress-plugins/wordpress-automatic-upgrade-12-release.html">WordPress Automatic Upgrade Plugin</a> (shouldn&#8217;t that be the <em>Automattic</em>?).  Nice, but I&#8217;d like to plug my approach to managing WordPress upgrades, which I think is even easier, assuming you&#8217;re OK with minimal command-line interaction.</p>
<p>First, install WordPress from a Subversion checkout; do:<br />
<code><br />
$ svn co http://svn.automattic.com/wordpress/tags/2.6/<br />
</code><br />
instead of downloading the .zip or .tar.gz file.  Configure as directed.</p>
<p>Then, when a new version is available, log into your webhost and run:<br />
<code><br />
$ svn switch http://svn.automattic.com/wordpress/tags/2.6.1/<br />
</code><br />
from your install directory.</p>
<p>Done.</p>
<p>Note that you can also do something similar (but an order of magnitude more complex, at least for my brain) using <a href="http://en.wikipedia.org/wiki/Git_(software)">git</a> and <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn</a> if you want to version your local settings as well.  Perhaps one day <a href="http://asheesh.org">Asheesh</a> or I will get that written up.</p>
]]></content:encoded>
			<wfw:commentRss>http://yergler.net/blog/2008/08/21/upgrading-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avoiding git PTSD</title>
		<link>http://yergler.net/blog/2008/06/13/avoiding_git_ptsd/</link>
		<comments>http://yergler.net/blog/2008/06/13/avoiding_git_ptsd/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 21:56:25 +0000</pubDate>
		<dc:creator>Nathan Yergler</dc:creator>
				<category><![CDATA[cc]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ptsd]]></category>

		<guid isPermaLink="false">http://yergler.net/blog/?p=554</guid>
		<description><![CDATA[In an attempt to prevent additional git (or maybe just git-svn?) induced PTSD, Asheesh kindly created a git phrasebook. If you, too, are a Subversion deserter and want to figure out how the whole branching thing works in git, this may be useful to you. Someday I&#8217;ll write up my thoughts on distributed version control [...]]]></description>
			<content:encoded><![CDATA[<p>In an attempt to prevent additional <a href="http://en.wikipedia.org/wiki/Git_(software)">git</a> (or maybe just git-svn?) induced <a href="http://en.wikipedia.org/wiki/PTSD">PTSD</a>, <a href="http://asheesh.org">Asheesh</a> kindly created a <a href="http://wiki.creativecommons.org/Git_phrasebook">git phrasebook</a>.  If you, too, are a <a href="http://en.wikipedia.org/wiki/Subversion_(software)">Subversion</a> deserter and want to figure out how the whole branching thing works in git, this may be useful to you.</p>
<p>Someday I&#8217;ll write up my thoughts on distributed version control and &#8220;convention versus configuration&#8221;, which seem to overlap in this deployment.  But not today.</p>
]]></content:encoded>
			<wfw:commentRss>http://yergler.net/blog/2008/06/13/avoiding_git_ptsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

