<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: DVCS Score Card</title>
	<atom:link href="http://www.stevestreeting.com/2009/11/06/dvcs-score-card/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/</link>
	<description>Man bites Ogre</description>
	<lastBuildDate>Fri, 19 Mar 2010 11:19:38 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Steve</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-269104</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Tue, 16 Mar 2010 12:31:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-269104</guid>
		<description>For completeness, after some work we managed to get the Mercurial repository down to under 100MB and therefore decided to go with it.</description>
		<content:encoded><![CDATA[<p>For completeness, after some work we managed to get the Mercurial repository down to under 100MB and therefore decided to go with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SteveStreeting.com &#187; Blog Archive &#187; hgsubversion &#8211; dropping old history during conversion (mod)</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-262429</link>
		<dc:creator>SteveStreeting.com &#187; Blog Archive &#187; hgsubversion &#8211; dropping old history during conversion (mod)</dc:creator>
		<pubDate>Tue, 24 Nov 2009 20:24:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-262429</guid>
		<description>[...] already posted about my experiences with Git and Mercurial, the end result of which was a vastly increased respect [...]</description>
		<content:encoded><![CDATA[<p>[...] already posted about my experiences with Git and Mercurial, the end result of which was a vastly increased respect [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261522</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Tue, 10 Nov 2009 11:21:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261522</guid>
		<description>It&#039;s the size in bytes - I&#039;m well aware of the cluster size issues that make the size on disk larger - the &#039;on disk&#039; figure is 228MB for Mercurial as opposed to 207MB for the actual data. 

As an experiment to examine how well compressed things were already, I tarrred and bz2&#039;ed both repositories. I found that both hardly changed at all, suggesting they&#039;re both well compressed already - Git shrunk from 116MB to just 113MB, and Mercurial from 207MB to 200MB. 

So it&#039;s not compression, and that also suggests there won&#039;t be any significant further gains during compressed network transfer. As I say, looking inside the filesystems of the repositories the main issue appears to be that Mercurial stores data in a filewise fashion so moved binaries are less efficient than in Git where a hashed binary is stored once regardless of how many folders it has existed in over the history. Generally, historical filesystem reorganisation is less efficient in Mercurial because of the filewise storage, it just shows up more obviously in binaries. Hopefully they might find a way to handle this more efficiently in the future, or at least give us a tool for stripping off old history before a certain date / revision. In the meantime I think I may have to go via Git just to strip off history, which is not ideal.</description>
		<content:encoded><![CDATA[<p>It&#8217;s the size in bytes &#8211; I&#8217;m well aware of the cluster size issues that make the size on disk larger &#8211; the &#8216;on disk&#8217; figure is 228MB for Mercurial as opposed to 207MB for the actual data. </p>
<p>As an experiment to examine how well compressed things were already, I tarrred and bz2&#8242;ed both repositories. I found that both hardly changed at all, suggesting they&#8217;re both well compressed already &#8211; Git shrunk from 116MB to just 113MB, and Mercurial from 207MB to 200MB. </p>
<p>So it&#8217;s not compression, and that also suggests there won&#8217;t be any significant further gains during compressed network transfer. As I say, looking inside the filesystems of the repositories the main issue appears to be that Mercurial stores data in a filewise fashion so moved binaries are less efficient than in Git where a hashed binary is stored once regardless of how many folders it has existed in over the history. Generally, historical filesystem reorganisation is less efficient in Mercurial because of the filewise storage, it just shows up more obviously in binaries. Hopefully they might find a way to handle this more efficiently in the future, or at least give us a tool for stripping off old history before a certain date / revision. In the meantime I think I may have to go via Git just to strip off history, which is not ideal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh Jensen</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261506</link>
		<dc:creator>Josh Jensen</dc:creator>
		<pubDate>Tue, 10 Nov 2009 04:09:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261506</guid>
		<description>When comparing repository sizes, there are two numbers I pay attention to in Windows-land.  The first is the size in bytes of the repository.  The second is size on disk, which tends to be much larger in a Mercurial repository, as the Mercurial repository stores each of its files individually.  This is contrasted with a big pack file in Git (and Bazaar, of which I am impressed with their 2.0 release).

What definition of repository size do you use?</description>
		<content:encoded><![CDATA[<p>When comparing repository sizes, there are two numbers I pay attention to in Windows-land.  The first is the size in bytes of the repository.  The second is size on disk, which tends to be much larger in a Mercurial repository, as the Mercurial repository stores each of its files individually.  This is contrasted with a big pack file in Git (and Bazaar, of which I am impressed with their 2.0 release).</p>
<p>What definition of repository size do you use?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261479</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Mon, 09 Nov 2009 16:15:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261479</guid>
		<description>@Anders: yeah, I actually tried to pick criteria that were of approximately the same importance to me to make the numerical approach sound, but as I say if pushed I would favour equal platform support and &#039;confidence&#039;, which is why I&#039;m coming down on Mercurial&#039;s side. 

As for design vs bugs, this also supports Mercurial over Git for me. That&#039;s not to say Git has a bad (technical) design, clearly it doesn&#039;t, but Mercurial&#039;s overall approach also sits a little more comfortably with me; cross-platform core, re-using existing knowledge rather than reinventing, being simple &amp; intuitive to use wherever possible.

@Face: I&#039;m actually using hgsubversion, because the results are faster and a little better for me (I even modified it so that merges can be ready on conversion), and you can incrementally pull revisions from SVN afterwards. It has a filemap option too - I haven&#039;t managed to get it to do what I want yet.</description>
		<content:encoded><![CDATA[<p>@Anders: yeah, I actually tried to pick criteria that were of approximately the same importance to me to make the numerical approach sound, but as I say if pushed I would favour equal platform support and &#8216;confidence&#8217;, which is why I&#8217;m coming down on Mercurial&#8217;s side. </p>
<p>As for design vs bugs, this also supports Mercurial over Git for me. That&#8217;s not to say Git has a bad (technical) design, clearly it doesn&#8217;t, but Mercurial&#8217;s overall approach also sits a little more comfortably with me; cross-platform core, re-using existing knowledge rather than reinventing, being simple &#038; intuitive to use wherever possible.</p>
<p>@Face: I&#8217;m actually using hgsubversion, because the results are faster and a little better for me (I even modified it so that merges can be ready on conversion), and you can incrementally pull revisions from SVN afterwards. It has a filemap option too &#8211; I haven&#8217;t managed to get it to do what I want yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Face</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261418</link>
		<dc:creator>Face</dc:creator>
		<pubDate>Sun, 08 Nov 2009 08:35:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261418</guid>
		<description>Thanks for your level-headed comparison there, Steve. Very informative.

For your repo size problem I can only propose to use &quot;hg convert&quot; with the filemap option to get rid of those big files. Maybe you can get the size down by using the branch-sort option, too.</description>
		<content:encoded><![CDATA[<p>Thanks for your level-headed comparison there, Steve. Very informative.</p>
<p>For your repo size problem I can only propose to use &#8220;hg convert&#8221; with the filemap option to get rid of those big files. Maybe you can get the size down by using the branch-sort option, too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stodge</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261410</link>
		<dc:creator>Stodge</dc:creator>
		<pubDate>Sun, 08 Nov 2009 02:45:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261410</guid>
		<description>Thanks for all this Steve incredibly interesting and useful. We&#039;re using SVN at work but I&#039;ve been pondering moving to something else for a new development platform because of its poor merging. Well, I think it&#039;s poor but it may just be my poor understanding based on years of using ClearCase.</description>
		<content:encoded><![CDATA[<p>Thanks for all this Steve incredibly interesting and useful. We&#8217;re using SVN at work but I&#8217;ve been pondering moving to something else for a new development platform because of its poor merging. Well, I think it&#8217;s poor but it may just be my poor understanding based on years of using ClearCase.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anders Elfgren</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261399</link>
		<dc:creator>Anders Elfgren</dc:creator>
		<pubDate>Sat, 07 Nov 2009 19:10:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261399</guid>
		<description>I haven&#039;t read it yet (but I searched through it) and just have two quick comments:

I&#039;m sure the ten parts of the final score aren&#039;t equally valuable to you, so adding a weight score to the table might bring out more useful values to go on.

Also, bear in mind that anything that isn&#039;t bad by design, but bad due to bugs, not having enough developer time/love yet, etc, is bound to be fixed sooner or later. Since OGRE will be worked on for years to come, considering future usage is a good idea.

Probably obvious stuff, but thought I&#039;d bring it up anyways :) Going to read the post now.</description>
		<content:encoded><![CDATA[<p>I haven&#8217;t read it yet (but I searched through it) and just have two quick comments:</p>
<p>I&#8217;m sure the ten parts of the final score aren&#8217;t equally valuable to you, so adding a weight score to the table might bring out more useful values to go on.</p>
<p>Also, bear in mind that anything that isn&#8217;t bad by design, but bad due to bugs, not having enough developer time/love yet, etc, is bound to be fixed sooner or later. Since OGRE will be worked on for years to come, considering future usage is a good idea.</p>
<p>Probably obvious stuff, but thought I&#8217;d bring it up anyways <img src='http://www.stevestreeting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Going to read the post now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jacmoe</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261395</link>
		<dc:creator>jacmoe</dc:creator>
		<pubDate>Sat, 07 Nov 2009 17:48:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261395</guid>
		<description>If you want to know that Mercurial is working, and not hung, pass --debug to clone/push/pull - they are aware of the problem.</description>
		<content:encoded><![CDATA[<p>If you want to know that Mercurial is working, and not hung, pass &#8211;debug to clone/push/pull &#8211; they are aware of the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://www.stevestreeting.com/2009/11/06/dvcs-score-card/comment-page-1/#comment-261380</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Sat, 07 Nov 2009 11:42:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevestreeting.com/?p=2354#comment-261380</guid>
		<description>The removal of media idea has 2 problems: firstly that it won&#039;t affect the size of the repository unless you can purge the media entirely from the history, which I haven&#039;t found a way to do in Mercurial yet, and secondly that although you decrease the size of the repository (which is good for encouraging people to grab it), you make the process of getting everything you need more complicated (which is bad for encouraging people to get involved). I think the inconvenience of having 2 repositories (and tools) nullifies any size reduction benefit.

As I say, the primary difference between Mercurial and Git seems to be that Mercurial stores new copies of binaries when you move them, whilst Git identifies that the hash is the same and doesn&#039;t store it again. In our (distant) history media has been moved a couple of times which is likely a major cause of the problem. If I can figure out how to prune old history I think it will make a major difference. I&#039;m thinking of trying to go via Git just for the history pruning then go back to Mercurial for the final.

The other bugbear I have with Mercurial is that is has no progress meter on remote operations. When you&#039;re clonin / pushing large amounts of data you have no indication of how long it will take or even whether it&#039;s still working; Git however has a nice % completion and K/s report which gives you confidence it&#039;s all ok. With a big Mercurial repo I&#039;m concerned people will kill the clone, thinking it&#039;s not working. 

But yes, overall I have to say that I agree with haffax &amp; Eric, having confidence in your tools is very important. Yes, Git only failed when I was using git-svn, which I won&#039;t need to use after the transition. But, the fact that when it did fail it wasn&#039;t at all helpful in reporting why gives me pause. It doesn&#039;t matter if a tool fails rarely - when it&#039;s a critical tool, its behaviour under fail conditions is very, very significant. Mercurial was very transparent - not only do you get a full stack trace and exception message, since Mercurial is all Python I found it considerably easier to investigate. Hell, I even felt comfortable enough to enhance a Mercurial extension (hgsubversion) to handle merges the way I wanted. In contrast Git was a lot more opaque; even with all the theory that&#039;s packed into their documentation it didn&#039;t really assist me in where I should start looking when git-svn fell over; I just had to randomly experiment. So on a gut level I feel happier with Mercurial than Git.

I know that lots of big projects are using Git. I also know that the vast majority of them are Linux-oriented projects (even Qt/Nokia are very Linux/KDE focussed - the majority of the devs at Qt Dev Days were running Linux on their MacBooks!). Being a Linux project implies a certain affinity with the innards of Unix-like systems and, dare I say, a higher than average tolerance for complexity over intuitiveness, which is the slot that Git fits in too. Linux and Git were definitely cut from the same cloth - they&#039;re both extremely clever, very technical pieces of work, but they also require more of the user, particularly in &#039;sticky&#039; situations. 

So for the same reason that I prefer my Mac over a desktop Linux, my preference is for Mercurial, although my appreciation for Git is far, far greater than it was at the start of this review. Git&#039;s a superb tool - it just has a few too many Linuxy traits for mere mortals like me to prefer it over the more intuitive Mercurial. I just really, really want to get this repo size down a bit first.</description>
		<content:encoded><![CDATA[<p>The removal of media idea has 2 problems: firstly that it won&#8217;t affect the size of the repository unless you can purge the media entirely from the history, which I haven&#8217;t found a way to do in Mercurial yet, and secondly that although you decrease the size of the repository (which is good for encouraging people to grab it), you make the process of getting everything you need more complicated (which is bad for encouraging people to get involved). I think the inconvenience of having 2 repositories (and tools) nullifies any size reduction benefit.</p>
<p>As I say, the primary difference between Mercurial and Git seems to be that Mercurial stores new copies of binaries when you move them, whilst Git identifies that the hash is the same and doesn&#8217;t store it again. In our (distant) history media has been moved a couple of times which is likely a major cause of the problem. If I can figure out how to prune old history I think it will make a major difference. I&#8217;m thinking of trying to go via Git just for the history pruning then go back to Mercurial for the final.</p>
<p>The other bugbear I have with Mercurial is that is has no progress meter on remote operations. When you&#8217;re clonin / pushing large amounts of data you have no indication of how long it will take or even whether it&#8217;s still working; Git however has a nice % completion and K/s report which gives you confidence it&#8217;s all ok. With a big Mercurial repo I&#8217;m concerned people will kill the clone, thinking it&#8217;s not working. </p>
<p>But yes, overall I have to say that I agree with haffax &#038; Eric, having confidence in your tools is very important. Yes, Git only failed when I was using git-svn, which I won&#8217;t need to use after the transition. But, the fact that when it did fail it wasn&#8217;t at all helpful in reporting why gives me pause. It doesn&#8217;t matter if a tool fails rarely &#8211; when it&#8217;s a critical tool, its behaviour under fail conditions is very, very significant. Mercurial was very transparent &#8211; not only do you get a full stack trace and exception message, since Mercurial is all Python I found it considerably easier to investigate. Hell, I even felt comfortable enough to enhance a Mercurial extension (hgsubversion) to handle merges the way I wanted. In contrast Git was a lot more opaque; even with all the theory that&#8217;s packed into their documentation it didn&#8217;t really assist me in where I should start looking when git-svn fell over; I just had to randomly experiment. So on a gut level I feel happier with Mercurial than Git.</p>
<p>I know that lots of big projects are using Git. I also know that the vast majority of them are Linux-oriented projects (even Qt/Nokia are very Linux/KDE focussed &#8211; the majority of the devs at Qt Dev Days were running Linux on their MacBooks!). Being a Linux project implies a certain affinity with the innards of Unix-like systems and, dare I say, a higher than average tolerance for complexity over intuitiveness, which is the slot that Git fits in too. Linux and Git were definitely cut from the same cloth &#8211; they&#8217;re both extremely clever, very technical pieces of work, but they also require more of the user, particularly in &#8217;sticky&#8217; situations. </p>
<p>So for the same reason that I prefer my Mac over a desktop Linux, my preference is for Mercurial, although my appreciation for Git is far, far greater than it was at the start of this review. Git&#8217;s a superb tool &#8211; it just has a few too many Linuxy traits for mere mortals like me to prefer it over the more intuitive Mercurial. I just really, really want to get this repo size down a bit first.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
