<?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>Tewha &#187; subversion</title>
	<atom:link href="http://tewha.net/tag/subversion/feed/" rel="self" type="application/rss+xml" />
	<link>http://tewha.net</link>
	<description>Writings and links on iPhone and iPad programming</description>
	<lastBuildDate>Wed, 18 Apr 2012 20:26:27 +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>Git cheat sheet</title>
		<link>http://tewha.net/2009/08/git-cheat-sheet/</link>
		<comments>http://tewha.net/2009/08/git-cheat-sheet/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 19:52:57 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=1021</guid>
		<description><![CDATA[Zack Rusin: Git cheat sheet. (via unixfudotnet)]]></description>
			<content:encoded><![CDATA[<p>Zack Rusin: <a href="http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html">Git cheat sheet</a>. (via <a href="http://twitter.com/unixfudotnet/status/3130486395">unixfudotnet</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/08/git-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Subversion 1.5 on Xcode</title>
		<link>http://tewha.net/2009/01/setting-up-subversion-15-on-xcode/</link>
		<comments>http://tewha.net/2009/01/setting-up-subversion-15-on-xcode/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 23:40:42 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://tewha.net/?p=791</guid>
		<description><![CDATA[Setting up Subversion 1.5 on Xcode. (Instructions are for Collabnet build, but you can use MacPorts build instead by replacing the path /opt/subversion/lib/ with /opt/local/lib/.)]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lemonteam.com/blog/2008/12/setting-up-subversion-15-on-xcode/">Setting up Subversion 1.5 on Xcode</a>. (Instructions are for Collabnet build, but you can use MacPorts build instead by replacing the path <code>/opt/subversion/lib/</code> with <code>/opt/local/lib/</code>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2009/01/setting-up-subversion-15-on-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion trial</title>
		<link>http://tewha.net/2007/02/subversion-trial/</link>
		<comments>http://tewha.net/2007/02/subversion-trial/#comments</comments>
		<pubDate>Tue, 20 Feb 2007 21:11:10 +0000</pubDate>
		<dc:creator>Steven Fisher</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[perforce]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://objectsatrest.com/2007/02/subversion-trial/</guid>
		<description><![CDATA[As a long time user of Perforce and a moderately experienced CVS user, I was glad to hear that our company was considering Subversion. I was even more happy to be part of the in-house trial of it. High expectations. &#8230; <a href="http://tewha.net/2007/02/subversion-trial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As a long time user of <a href="http://www.perforce.com">Perforce</a> and a moderately experienced <a href="http://www.nongnu.org/cvs/">CVS</a> user, I was glad to hear that our company was considering <a href="http://subversion.tigris.org/">Subversion</a>. I was even more happy to be part of the in-house trial of it.</p>

<p><strong>High expectations.</strong></p>

<p>I&#8217;d heard from various sources that Subversion was like cvs, but <a href="http://subversion.darwinports.com/">without the suck</a>. I&#8217;d heard it compared favorably to Perforce; certainly, it had features I missed from Perforce that cvs just didn&#8217;t deliver (notably, I missed atomic commits and, hence, easy updating to a specific version). Subversion&#8217;s home page claims &#8220;Subversion&#8217;s interface to a particular feature is similar to CVS&#8217;s, except where there&#8217;s a compelling reason to do otherwise.&#8221;</p>

<p><strong>Initial thoughts on Subversion.</strong></p>

<p>I wasn&#8217;t involved in the server side setup of the repository, so I can&#8217;t talk about that. I can, however, talk about the import. It was indeed an experience a lot like CVS, but without the suck. I removed my temporary files, did the <code>svn import</code>, and went from there. Painless and completely like CVS, really.</p>

<p><strong>Without the suck? Well, with <em>all new</em> suck, anyway.</strong></p>

<p>Almost immediately, I ran into problems. In fact, my very first Subversion operation was to add some files to source control.</p>

<p>Remember above, where I quoted the Subversion web page? It turns out their idea of compelling is different than any other rational human being.</p>

<p>Every CVS command has a two character equivalent. As a heavy keyboard user, I&#8217;ve grown really accustomed to this. This is not true of Subversion. In fact, some of the CVS command aliases aren&#8217;t supported in Subversion. If this sounds like I&#8217;m whining, sure, maybe I am a little. When an experience is promised, it should be delivered. If Subversion really isn&#8217;t going to support CVS commands in the interest of <a href="http://svn.haxx.se/dev/archive-2006-10/0095.shtml">keeping their command namespace clean</a>, they&#8217;ve clearly deviated from their goal. Sure, one character savings isn&#8217;t much. But when users need to edit a submitted command to fix it, and request the command alias over and over again, we have a larger problem. The fingers have knowledge; denying that knowledge for so little reason is foolish.</p>

<p><strong>CVS suck removed.</strong></p>

<p>I hate deep trees. Our root directory for our repository was <code>/home/subversion/productname</code> However, because of Subversion&#8217;s branch style, my source ended up in <code>/home/subversion/productname/trunk/projectname</code>. Ugly, but not that big a problem. Instead of checking out <code>/home/subversion</code>, it turns out I can check out <code>/home/subversion/productname/trunk/projectname</code>. The difference between module names and directories was a big part of CVS&#8217;s suck, so it&#8217;s great to see this part of the suck removed.</p>

<p>As I mentioned above, Subversion commits are atomic. It wasn&#8217;t long before my code was not running correctly on Mac vs. Windows. <code>svn up -r</code> to the rescue. Because the entire repository shares a a single version number, doing a binary search for the change that broke the code was really easy. The code worked in v1 and didn&#8217;t in v15, and a few minutes later I determined that the break was v8.</p>

<p>Another mistake I made was not thinking through my directory structure in advance. But that&#8217;s okay, since Subversion supports a move command. Oddly enough, the move command does not support wildcards, but I was able to work around that fairly easily. There&#8217;s always a work around for the Unix shell, but the lack of wildcard support for mv is mildly confusing.</p>

<p><a href="http://svnbook.red-bean.com/en/1.1/ch07s02.html#svn-ch-7-sect-2.3.3">Subversion&#8217;s ignore list is directory specific</a>. This let me add masks that covered all of Qt&#8217;s temporary files easily, without worrying about them impacting other things in the repository. More on Qt later.</p>

<p><strong>Overall picture.</strong></p>

<p>The bottom line is that Subversion is indeed an improvement over CVS. The lack of two character command aliases is frustrating, and it means the fingers of many CVS users will need to relearn how to do various functions. Worse, the commands are close enough that this will take a while.</p>

<p>The attitude towards this deficiency is even more disturbing. An oversight is one thing, but choosing to break user habits for no good reason is something else entirely. You could argue that it&#8217;s open source, and I could just fix this myself, and you&#8217;d even be right. However, I fail to see a good reason why compatibility with CVS commands should require a custom build. Still, sooner or later I&#8217;ll probably go this route.</p>

<p>It&#8217;s less clear of a win over Perforce. The Subversion command line interface is better, but so far none of the GUIs are as good as Perforce&#8217;s p4v. However, considering Perforce costs $800 US per user, I&#8217;m willing to put up with a less capable GUI client. Also, there are already some GUI clients appearing. I don&#8217;t need to forever put up with what a single vendor offers as I did with Perforce. I&#8217;ll cover the GUI clients later, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://tewha.net/2007/02/subversion-trial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: tewha.net @ 2012-05-23 04:05:26 -->
