<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Linus Makes a git of Himself</title>
	<link>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/</link>
	<description>A man needs a little madness, or else he never dares cut the rope and be free. -Nikos Kazantzakis</description>
	<pubDate>Wed, 07 Jan 2009 04:33:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>

	<item>
		<title>By: Jason</title>
		<link>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-37807</link>
		<author>Jason</author>
		<pubDate>Tue, 21 Aug 2007 13:09:14 +0000</pubDate>
		<guid>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-37807</guid>
		<description>Hi Martijn,

Yeah, Linus does enjoy taking that attitude.  Just a shame he overdid that rather than talking about the really interesting parts of git.

Re: CI vs branching, I am as big a fan of CI as anyone.  Heck, I started a company to make a CI server :).  I also take your point that CI can be an alternative to some forms of branching.  However, there are other forms of branching that CI cannot replace.  For example, maintenance branches for old release streams and development branches for experimental/long term projects.  In these cases developer teams cannot avoid parallel development, and there will always be merging.

Taking things even further, in an agile approach teams are encouraged to start simple and refactor mercilessly.  This can be painful, however, when there are parallel codelines.  Refactoring is the enemy of parallel development as the merging tools are not smart enough to handle it.  This is a big enough topic to be worth its own post!</description>
		<content:encoded><![CDATA[<p>Hi Martijn,</p>
<p>Yeah, Linus does enjoy taking that attitude.  Just a shame he overdid that rather than talking about the really interesting parts of git.</p>
<p>Re: CI vs branching, I am as big a fan of CI as anyone.  Heck, I started a company to make a CI server :).  I also take your point that CI can be an alternative to some forms of branching.  However, there are other forms of branching that CI cannot replace.  For example, maintenance branches for old release streams and development branches for experimental/long term projects.  In these cases developer teams cannot avoid parallel development, and there will always be merging.</p>
<p>Taking things even further, in an agile approach teams are encouraged to start simple and refactor mercilessly.  This can be painful, however, when there are parallel codelines.  Refactoring is the enemy of parallel development as the merging tools are not smart enough to handle it.  This is a big enough topic to be worth its own post!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martijn Meijering</title>
		<link>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-37735</link>
		<author>Martijn Meijering</author>
		<pubDate>Mon, 20 Aug 2007 16:03:04 +0000</pubDate>
		<guid>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-37735</guid>
		<description>Ah well, maybe Linus just likes stepping on people's toes :-) 

Personally, I find git, mercurial, monotone etc very interesting, but I'm very happy with subversion as it is, even without merge tracking. The thing is, coming from an XP background, I'm really into continuous integration, so I try not to use branching.

There are at least two ways to deal with the pain that comes from the merging that goes with branching: continuous integration or excellent merging tools.

If you do CI, you avoid working on a private branch, you just work in your working copy, synchronise a couple of times a day and use tools that make this easy. Not everybody likes this, but done properly (with unit testing, TDD etc), this is a breeze. Small changes, rare conflicts, no poisoning of the trunk. Subversion is excellent if you want to work like this.

The people who like git take the opposite approach: instead of avoiding the pain of merging by not branching, they accept branching as natural and develop excellent tools to make merging easy. If you like to work the way the kernel developers do, Subversion is probably not the tool you want to be using.

Some people will feel strongly that distributed development is better than CI, just as I think the opposite is true. But clearly, both methods can be very successful.

Git is a more powerful tool in the sense that it supports both models well. However, since I do not need the extra features it offers, I'd rather use Subversion, if only because it has nice GUI's such as Tortoise. This will undoubtedly change however, as I'm sure the git people will come up with decent GUI's as well.

Just my 2 cents.</description>
		<content:encoded><![CDATA[<p>Ah well, maybe Linus just likes stepping on people&#8217;s toes <img src='http://www.alittlemadness.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Personally, I find git, mercurial, monotone etc very interesting, but I&#8217;m very happy with subversion as it is, even without merge tracking. The thing is, coming from an XP background, I&#8217;m really into continuous integration, so I try not to use branching.</p>
<p>There are at least two ways to deal with the pain that comes from the merging that goes with branching: continuous integration or excellent merging tools.</p>
<p>If you do CI, you avoid working on a private branch, you just work in your working copy, synchronise a couple of times a day and use tools that make this easy. Not everybody likes this, but done properly (with unit testing, TDD etc), this is a breeze. Small changes, rare conflicts, no poisoning of the trunk. Subversion is excellent if you want to work like this.</p>
<p>The people who like git take the opposite approach: instead of avoiding the pain of merging by not branching, they accept branching as natural and develop excellent tools to make merging easy. If you like to work the way the kernel developers do, Subversion is probably not the tool you want to be using.</p>
<p>Some people will feel strongly that distributed development is better than CI, just as I think the opposite is true. But clearly, both methods can be very successful.</p>
<p>Git is a more powerful tool in the sense that it supports both models well. However, since I do not need the extra features it offers, I&#8217;d rather use Subversion, if only because it has nice GUI&#8217;s such as Tortoise. This will undoubtedly change however, as I&#8217;m sure the git people will come up with decent GUI&#8217;s as well.</p>
<p>Just my 2 cents.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Suer</title>
		<link>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-34318</link>
		<author>Chris Suer</author>
		<pubDate>Wed, 11 Jul 2007 02:24:22 +0000</pubDate>
		<guid>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-34318</guid>
		<description>I think the idea of categorising a version control system as centralised or decentralised is not going to make sense very soon and it's probably causing a lot of confusion already.

All of the so called centralised version control systems will eventually have the ability to perform local commits (if they don't already) at which point they become similar to the decentralised systems.

Any decentralised version control system can be considered a centralised system if you call one particular node the master (in the Linux case, it would be Linus's tree).

I'm skipping over the differences in processes involved: e.g. push vs.pull, but they aren't really anything to do with whether it's centralised or not.

My biggest concern with git is that you have to have the entire history of a project downloaded locally. They say it's fast so it doesn't matter (I haven't tried it) but it doesn't sound like something that will scale (history only gets longer). I realise that you can do shallow copies with git but I believe that leaves you with a crippled local copy. It strikes me that whether history is present on a local machine is purely a caching issue and so the absence of it shouldn't be a problem.</description>
		<content:encoded><![CDATA[<p>I think the idea of categorising a version control system as centralised or decentralised is not going to make sense very soon and it&#8217;s probably causing a lot of confusion already.</p>
<p>All of the so called centralised version control systems will eventually have the ability to perform local commits (if they don&#8217;t already) at which point they become similar to the decentralised systems.</p>
<p>Any decentralised version control system can be considered a centralised system if you call one particular node the master (in the Linux case, it would be Linus&#8217;s tree).</p>
<p>I&#8217;m skipping over the differences in processes involved: e.g. push vs.pull, but they aren&#8217;t really anything to do with whether it&#8217;s centralised or not.</p>
<p>My biggest concern with git is that you have to have the entire history of a project downloaded locally. They say it&#8217;s fast so it doesn&#8217;t matter (I haven&#8217;t tried it) but it doesn&#8217;t sound like something that will scale (history only gets longer). I realise that you can do shallow copies with git but I believe that leaves you with a crippled local copy. It strikes me that whether history is present on a local machine is purely a caching issue and so the absence of it shouldn&#8217;t be a problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason</title>
		<link>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-29380</link>
		<author>Jason</author>
		<pubDate>Tue, 05 Jun 2007 12:59:18 +0000</pubDate>
		<guid>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-29380</guid>
		<description>Hi Tom,

I think the most interesting thing about the distributed model is the extra challenges it presents to the implementation.  These challenges have given birth to solutions that would also be very useful in a centralised environment.  Layering a partially centralised process and/or UI on top of the distributed technology - hiding some of the unwanted complexity of distribution that is not always needed - could provide a compelling replacement to traditional centralised SCMs.</description>
		<content:encoded><![CDATA[<p>Hi Tom,</p>
<p>I think the most interesting thing about the distributed model is the extra challenges it presents to the implementation.  These challenges have given birth to solutions that would also be very useful in a centralised environment.  Layering a partially centralised process and/or UI on top of the distributed technology - hiding some of the unwanted complexity of distribution that is not always needed - could provide a compelling replacement to traditional centralised SCMs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Palmer</title>
		<link>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-29334</link>
		<author>Tom Palmer</author>
		<pubDate>Tue, 05 Jun 2007 05:10:11 +0000</pubDate>
		<guid>http://www.alittlemadness.com/2007/06/05/linus-makes-a-git-of-himself/#comment-29334</guid>
		<description>After studying (note, not using) popular decentralized systems, I became pretty convinced that the concepts are better than svn, but not all that different. Just more of the basics right. Imagine hashes as version numbers instead of simple increments like in svn. Less stomping on feet that way. And imagine that a branch is just a separate repo. And you are right that they tend to have way better merging than svn. They can still be used in a centralized fashion if wanted, though.</description>
		<content:encoded><![CDATA[<p>After studying (note, not using) popular decentralized systems, I became pretty convinced that the concepts are better than svn, but not all that different. Just more of the basics right. Imagine hashes as version numbers instead of simple increments like in svn. Less stomping on feet that way. And imagine that a branch is just a separate repo. And you are right that they tend to have way better merging than svn. They can still be used in a centralized fashion if wanted, though.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
