<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.12-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Choosing a new version control system</title>
	<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system</link>
	<description>What happens at LShift</description>
	<pubDate>Sat, 11 Oct 2008 23:03:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.12-alpha</generator>

	<item>
		<title>by: Mike Kramlich</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-98856</link>
		<pubDate>Mon, 26 May 2008 02:42:16 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-98856</guid>
					<description>&lt;p&gt;My favorite currently is git.
In the past I've used CVS, Subversion, Perforce, ClearCase and AccuRev and they all sucked in various ways.
Git basically just does version tracking on a file tree.
All of Git's persisted history &#38; metadata about your tracked file tree lives under a single .git subdir that hangs off the root of the tree. There is no central repository or other file magic, no hanging chads or dot-file seeds, etc.
It's easy to use. As an example, once Git is installed, you can literally pull down the current official Linux kernel trunk in a single CLI invocation, with no previous setup steps necessary. Subsequent refreshes (pulls) are also that easy.
Git also has the advantage that it's of the distributed flavor of VCS's so very friendly for open source projects or distributed/global employees; it's become the official one for Linux; and it's lightning fast in the most common use cases for developers since it's all about running small processes locally and talking to a local filesystem. So the problems of a client/server or centralized/remote architecture go away. There are no locking/in-use problems between concurrent users, for example.
Git seems to be one of the faster systems, due to it's architecture.
Also, if you don't trust it's developer (Linus) to create a VCS to put your golden eggs into, then you probably shouldn't be using Linux either. (Though it's a much younger codebase, of course, so beware.)
I can't speak to how well it handles binary files.
I have not used Mercurial, Bazaar, Darcs or Arch, so I can't say if git is better or worse than any of those. A rough initial glance at them did not impress me enough to look closer, unlike git. Some Googling will uncover several in-depth comparisons and benchmarking in this area.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>My favorite currently is git.<br />
In the past I&#8217;ve used CVS, Subversion, Perforce, ClearCase and AccuRev and they all sucked in various ways.<br />
Git basically just does version tracking on a file tree.<br />
All of Git&#8217;s persisted history &amp; metadata about your tracked file tree lives under a single .git subdir that hangs off the root of the tree. There is no central repository or other file magic, no hanging chads or dot-file seeds, etc.<br />
It&#8217;s easy to use. As an example, once Git is installed, you can literally pull down the current official Linux kernel trunk in a single CLI invocation, with no previous setup steps necessary. Subsequent refreshes (pulls) are also that easy.<br />
Git also has the advantage that it&#8217;s of the distributed flavor of VCS&#8217;s so very friendly for open source projects or distributed/global employees; it&#8217;s become the official one for Linux; and it&#8217;s lightning fast in the most common use cases for developers since it&#8217;s all about running small processes locally and talking to a local filesystem. So the problems of a client/server or centralized/remote architecture go away. There are no locking/in-use problems between concurrent users, for example.<br />
Git seems to be one of the faster systems, due to it&#8217;s architecture.<br />
Also, if you don&#8217;t trust it&#8217;s developer (Linus) to create a VCS to put your golden eggs into, then you probably shouldn&#8217;t be using Linux either. (Though it&#8217;s a much younger codebase, of course, so beware.)<br />
I can&#8217;t speak to how well it handles binary files.<br />
I have not used Mercurial, Bazaar, Darcs or Arch, so I can&#8217;t say if git is better or worse than any of those. A rough initial glance at them did not impress me enough to look closer, unlike git. Some Googling will uncover several in-depth comparisons and benchmarking in this area.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: FooBat</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-98383</link>
		<pubDate>Fri, 23 May 2008 23:02:40 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-98383</guid>
					<description>&lt;p&gt;Mercurial makes sense.  I don't see how Bazaar can even be considered for projects with larger repositories or more history.  Even using Bazaar on its own repository is painfully slow.  A pull to update a clone of bzr.dev took well over 6 hours for me--for a &#60;100MB repository! In the same time, I had time to update git, linux-kernel, and mercurial clones, rebuild them, make dinner, and write some code.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Mercurial makes sense.  I don&#8217;t see how Bazaar can even be considered for projects with larger repositories or more history.  Even using Bazaar on its own repository is painfully slow.  A pull to update a clone of bzr.dev took well over 6 hours for me&#8211;for a &lt;100MB repository! In the same time, I had time to update git, linux-kernel, and mercurial clones, rebuild them, make dinner, and write some code.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: bastiand</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-98156</link>
		<pubDate>Thu, 22 May 2008 19:11:47 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-98156</guid>
					<description>&lt;p&gt;Nice post. The mercurial eclipse plugin has seen quite some enhancements, recently. So I'd like to invite you to try it and give us some hints, which are the biggest roadblocks for you when using it :-).&lt;/p&gt;

&lt;p&gt;Bastian&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Nice post. The mercurial eclipse plugin has seen quite some enhancements, recently. So I&#8217;d like to invite you to try it and give us some hints, which are the biggest roadblocks for you when using it :-).</p>
<p>Bastian</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: David Roussel</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-96356</link>
		<pubDate>Wed, 14 May 2008 15:07:51 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-96356</guid>
					<description>&lt;p&gt;ahh!  &lt;/p&gt;

&lt;p&gt;If you get the captca wrong you lose your comment!!!!&lt;/p&gt;

&lt;p&gt;Again, but shorter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;looking forward to part 3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;agree about the architectural vision. hg has it, git has it (for the lowwe, pluming,  layers), but bzr doesn't.  Maybe  I haven't read enoght about bzr.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how did you get on with the merging in hg?  How did you do you merging on windows?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
		<content:encoded><![CDATA[<p>ahh!  </p>
<p>If you get the captca wrong you lose your comment!!!!</p>
<p>Again, but shorter:</p>
<ul>
<li>
<p>looking forward to part 3</p>
</li>
<li>
<p>agree about the architectural vision. hg has it, git has it (for the lowwe, pluming,  layers), but bzr doesn&#8217;t.  Maybe  I haven&#8217;t read enoght about bzr.</p>
</li>
<li>
<p>how did you get on with the merging in hg?  How did you do you merging on windows?</p>
</li>
</ul>
]]></content:encoded>
				</item>
	<item>
		<title>by: tonyg</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-94751</link>
		<pubDate>Wed, 07 May 2008 12:15:24 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-94751</guid>
					<description>&lt;p&gt;Liam, have you tried TortoiseHg? How do you find it, if so?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Liam, have you tried TortoiseHg? How do you find it, if so?</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Paul Crowley</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-94105</link>
		<pubDate>Sun, 04 May 2008 17:10:28 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-94105</guid>
					<description>&lt;p&gt;Tony: sure, but representations in VCSs are hard to change, especially the network protocol.  Some binary formats can be merged with special tools, but only if the VCS can defer merging to external executables, which again runs entirely contrary to the spirit of darcs.&lt;/p&gt;

&lt;p&gt;I'd like to see Mercurial (and/or Bazaar I guess) adopt something like darcs's approach to history-aware cherry picking, but retain the binary approach to storage and transmission and use the darcs algorithms only at merge time.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Tony: sure, but representations in VCSs are hard to change, especially the network protocol.  Some binary formats can be merged with special tools, but only if the VCS can defer merging to external executables, which again runs entirely contrary to the spirit of darcs.</p>
<p>I&#8217;d like to see Mercurial (and/or Bazaar I guess) adopt something like darcs&#8217;s approach to history-aware cherry picking, but retain the binary approach to storage and transmission and use the darcs algorithms only at merge time.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Liam Clancy (metafeather)</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93866</link>
		<pubDate>Sat, 03 May 2008 13:24:03 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93866</guid>
					<description>&lt;p&gt;Great article Paul, look forward to the next one.&lt;/p&gt;

&lt;p&gt;We are currently adopting Mercural too, but have a lot invested in Subversion - particularly in training for non-techies to get the version control bug thanks to TortoiseSVN, although part of the company is still using CVS as well.&lt;/p&gt;

&lt;p&gt;I'd be very interested in how you migrate away from Subversion and/or how you find ways to maintain both repositories side by side especially in reusing your existing tools.&lt;/p&gt;

&lt;p&gt;The MercurialPlugin for Trac has eased our pain and there appears possibilities for DVCS of an existing SVN workarea:&lt;/p&gt;

&lt;p&gt;http://trac.edgewall.org/wiki/TracMercurial
 http://www.selenic.com/mercurial/wiki/index.cgi/WorkingWithSubversion&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Great article Paul, look forward to the next one.</p>
<p>We are currently adopting Mercural too, but have a lot invested in Subversion - particularly in training for non-techies to get the version control bug thanks to TortoiseSVN, although part of the company is still using CVS as well.</p>
<p>I&#8217;d be very interested in how you migrate away from Subversion and/or how you find ways to maintain both repositories side by side especially in reusing your existing tools.</p>
<p>The MercurialPlugin for Trac has eased our pain and there appears possibilities for DVCS of an existing SVN workarea:</p>
<p>http://trac.edgewall.org/wiki/TracMercurial<br />
 http://www.selenic.com/mercurial/wiki/index.cgi/WorkingWithSubversion</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: tonyg</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93360</link>
		<pubDate>Thu, 01 May 2008 15:18:08 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93360</guid>
					<description>&lt;p&gt;Delta-compression is a pretty important feature, I agree, but really only for space-saving: it's a representation issue rather than a semantic issue, if you see what I mean. No matter the system, binary files are treated as blobs (diff &#38; merge over binaries not being a realistic option?). Darcs could add delta compression to its repository- and network-format and it wouldn't change the way the system worked at all.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Delta-compression is a pretty important feature, I agree, but really only for space-saving: it&#8217;s a representation issue rather than a semantic issue, if you see what I mean. No matter the system, binary files are treated as blobs (diff &amp; merge over binaries not being a realistic option?). Darcs could add delta compression to its repository- and network-format and it wouldn&#8217;t change the way the system worked at all.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Paul Crowley</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93348</link>
		<pubDate>Thu, 01 May 2008 13:57:37 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93348</guid>
					<description>&lt;p&gt;Darcs and binary files: see&lt;/p&gt;

&lt;p&gt;http://wiki.darcs.net/DarcsWiki/FrequentlyAskedQuestions#head-f475693ac8dd4af9a381aad47b3c9dc90d6d7a32
and this thread: http://osdir.com/ml/version-control.darcs.user/2004-07/msg00018.html&lt;/p&gt;

&lt;p&gt;Darcs stores binary files as hex, and does not attempt to delta-compress them at all, which could be painful on network bandwidth.  As I said, the storage and network format is fundamentally based on patches which are fundamentally only meaningful on line-oriented text files. &lt;/p&gt;

&lt;p&gt;Tom: I'm very interested to hear about the advantages of Bazaar over Mercurial; deciding between those two was as I said the most arbitrary part of the decision.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Darcs and binary files: see</p>
<p>http://wiki.darcs.net/DarcsWiki/FrequentlyAskedQuestions#head-f475693ac8dd4af9a381aad47b3c9dc90d6d7a32<br />
and this thread: http://osdir.com/ml/version-control.darcs.user/2004-07/msg00018.html</p>
<p>Darcs stores binary files as hex, and does not attempt to delta-compress them at all, which could be painful on network bandwidth.  As I said, the storage and network format is fundamentally based on patches which are fundamentally only meaningful on line-oriented text files. </p>
<p>Tom: I&#8217;m very interested to hear about the advantages of Bazaar over Mercurial; deciding between those two was as I said the most arbitrary part of the decision.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Tom Berger</title>
		<link>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93203</link>
		<pubDate>Wed, 30 Apr 2008 22:19:03 +0000</pubDate>
		<guid>http://www.lshift.net/blog/2008/04/30/choosing-a-new-version-control-system#comment-93203</guid>
					<description>&lt;p&gt;For obvious reasons*, I'm quite curious to hear more about what led you to choose Mercurial over Bazaar.&lt;/p&gt;

&lt;p&gt;You only mention two criteria:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;i&gt;...clearest architectural vision...&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I find it hard to think that this is the case, but, either it's true (in which case the bzr folks should work on focusing their 'architectural vision') or it isn't (in which case they should work on better PR). What in particular made you think that Mercurial's architectural vision is clearer?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;i&gt;projects which I felt would be good at making good choices, such as Java and Coyotos&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Setting aside the paradox of Java choosing a system written in a language other than Java (and with a radically different architectural vision too!), I'm pretty sure that most big projects (like Java, Coyotos, Mozilla) that have chosen Mercurial over Bazaar did so because at the time, hg had better performance for extremely large trees, and despite the fact that bzr had many other clear advantages. Meanwhile bzr improved a lot without compromising many of its process and architecture goals (turns out they were right about premature optimization after all). 99% of users (and LShift probably being inside these) shouldn't suffer from these performance problems, and definitely don't today, with the latest versions of bzr.&lt;/p&gt;

&lt;p&gt;If you don't feel like posting in more detail here, or sending something to the bzr mailing list, I wouldn't mind chatting about this (I don't hope to convince you, and Mercurial is not a bad choice, just want to learn a thing or two).&lt;/p&gt;

&lt;p&gt;Also, I won't bother listing here what are, IMHO, the clear advantages of bzr, but ask if you're interested.&lt;/p&gt;

&lt;p&gt;Tom&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;disclosure: the commenter is employed by Canonical, the company sponsoring bzr.&lt;/li&gt;
&lt;/ul&gt;
</description>
		<content:encoded><![CDATA[<p>For obvious reasons*, I&#8217;m quite curious to hear more about what led you to choose Mercurial over Bazaar.</p>
<p>You only mention two criteria:</p>
<ol>
<li><i>&#8230;clearest architectural vision&#8230;</i></li>
</ol>
<p>I find it hard to think that this is the case, but, either it&#8217;s true (in which case the bzr folks should work on focusing their &#8216;architectural vision&#8217;) or it isn&#8217;t (in which case they should work on better PR). What in particular made you think that Mercurial&#8217;s architectural vision is clearer?</p>
<ol>
<li><i>projects which I felt would be good at making good choices, such as Java and Coyotos</i></li>
</ol>
<p>Setting aside the paradox of Java choosing a system written in a language other than Java (and with a radically different architectural vision too!), I&#8217;m pretty sure that most big projects (like Java, Coyotos, Mozilla) that have chosen Mercurial over Bazaar did so because at the time, hg had better performance for extremely large trees, and despite the fact that bzr had many other clear advantages. Meanwhile bzr improved a lot without compromising many of its process and architecture goals (turns out they were right about premature optimization after all). 99% of users (and LShift probably being inside these) shouldn&#8217;t suffer from these performance problems, and definitely don&#8217;t today, with the latest versions of bzr.</p>
<p>If you don&#8217;t feel like posting in more detail here, or sending something to the bzr mailing list, I wouldn&#8217;t mind chatting about this (I don&#8217;t hope to convince you, and Mercurial is not a bad choice, just want to learn a thing or two).</p>
<p>Also, I won&#8217;t bother listing here what are, IMHO, the clear advantages of bzr, but ask if you&#8217;re interested.</p>
<p>Tom</p>
<ul>
<li>disclosure: the commenter is employed by Canonical, the company sponsoring bzr.</li>
</ul>
]]></content:encoded>
				</item>
</channel>
</rss>
