<?xml version="1.0" encoding="UTF-8"?><!-- generator="lyceum/1.0.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Shipping quality code with git</title>
	<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/</link>
	<description>Red Hat Magazine</description>
	<pubDate>Fri, 10 Oct 2008 20:31:18 +0000</pubDate>
	<generator>http://lyceum.ibiblio.org/?v=1.0.2</generator>

	<item>
		<title>by: Prepare-se para comer poeira do git &#171; rafa.rocha</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-83297</link>
		<pubDate>Sun, 11 May 2008 04:56:24 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-83297</guid>
					<description>[...] Atualmente, nem tenho idéia, como estão se comportando os mantenedores do cvs/svn/ss/starTeam, entre outros quanto a estas mudanças. Benchmarks[1][] já estão sendo demonstrados, comparativos mostram-se publicamente justificados[1][2][3][4][5] o ganho que o git vem oferecendo. Basta apenas estarmos acompanhando estas evoluções e/ou colaborando nas principais listas existentes [1], bem como de boas ferramentas em processo de desenvolvimento em massa. Já tá rolando screenshots do plugin para o git(bem interessante o history views a partir do resource decorator na perspectiva logo abaixo na view da IDE do eclipse. isso vai virar febre logo, logo). [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Atualmente, nem tenho idéia, como estão se comportando os mantenedores do cvs/svn/ss/starTeam, entre outros quanto a estas mudanças. Benchmarks[1][] já estão sendo demonstrados, comparativos mostram-se publicamente justificados[1][2][3][4][5] o ganho que o git vem oferecendo. Basta apenas estarmos acompanhando estas evoluções e/ou colaborando nas principais listas existentes [1], bem como de boas ferramentas em processo de desenvolvimento em massa. Já tá rolando screenshots do plugin para o git(bem interessante o history views a partir do resource decorator na perspectiva logo abaixo na view da IDE do eclipse. isso vai virar febre logo, logo). [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Brenton</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81037</link>
		<pubDate>Thu, 08 May 2008 14:35:29 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81037</guid>
					<description>Basically this article focused on shipping code.  For an internal project "shipping" might me mean handing off the codebase to release engineering.  For an open source project shipping can simply mean publishing a repo.  Indeed, once the code has shipped it must be managed differently.

I actually had in the original draft a warning about how to apply these practices in the context of the project you are working on.  In hindsight it might have been good to leave that in.  I think these comments sum it up though.

On a side note your point on the correct use of merging is well taken.  I didn't want to go into all the detail of fastforward vs. recursive merges in the article.  Our problem with merging on "non-shipped" code is that on our team non-fastforward merges were happening far too often.  The history was cluttered with merge commits to the point where it was extremely annoying and needless noise IMO (for a tree that hasn't shipped yet).</description>
		<content:encoded><![CDATA[<p>Basically this article focused on shipping code.  For an internal project &#8220;shipping&#8221; might me mean handing off the codebase to release engineering.  For an open source project shipping can simply mean publishing a repo.  Indeed, once the code has shipped it must be managed differently.</p>
<p>I actually had in the original draft a warning about how to apply these practices in the context of the project you are working on.  In hindsight it might have been good to leave that in.  I think these comments sum it up though.</p>
<p>On a side note your point on the correct use of merging is well taken.  I didn&#8217;t want to go into all the detail of fastforward vs. recursive merges in the article.  Our problem with merging on &#8220;non-shipped&#8221; code is that on our team non-fastforward merges were happening far too often.  The history was cluttered with merge commits to the point where it was extremely annoying and needless noise IMO (for a tree that hasn&#8217;t shipped yet).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Brenton</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81023</link>
		<pubDate>Thu, 08 May 2008 14:15:45 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81023</guid>
					<description>I probably should have mentioned this is how we maintain a large internal codebase.  I completely understand (and agree) with your statements about the dangers of rewriting history.  The truth is on our projects we indeed have a point in which the code is far enough downstream that no rewriting is allowed to occur.

It all comes down to your first point of code that is "behind closed doors".  That's the key for rewriting.</description>
		<content:encoded><![CDATA[<p>I probably should have mentioned this is how we maintain a large internal codebase.  I completely understand (and agree) with your statements about the dangers of rewriting history.  The truth is on our projects we indeed have a point in which the code is far enough downstream that no rewriting is allowed to occur.</p>
<p>It all comes down to your first point of code that is &#8220;behind closed doors&#8221;.  That&#8217;s the key for rewriting.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: David Woodhouse</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81021</link>
		<pubDate>Thu, 08 May 2008 14:10:08 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81021</guid>
					<description>Not to mention that the example shown in section 1 is particularly gratuitous -- it sounds like you've missed the fundamental point that git doesn't have a linear progression of commits; it's designed to have a _graph_ of commits. You could, and _should_, have just merged the tree with 'B's changes, as git was designed to do.

  B1*---B2---------\
  /                 \
A1---A2---A3*---A4---A5


This preserves the ordering of commits and merges, and reflects the fact that changes B1 and B2 were designed, committed and tested on top of commit A1. And means that 'git-bisect' works as designed if we later need to track down bugs introduced in these commits.

If developer B wants to use the 'squashing' trick to combine his patches into one commit, before he's ever made them public, that might make sense. But if 'A' is upstream, or even an intermediate 'subsystem' tree, and suddenly decides that he's going to break his tree and collapse commits 'A1' and 'A2' together so that it goes...

 A0---A2'---A3'---

... when other developers were _using_ that tree as a base for further development, then that is really nasty.

"Rebasing is fine for maintaining *your* own patch set, i.e. it is an alternative to using quilt. But it is absolutely not acceptable for *anything* else." -- Linus Torvalds.</description>
		<content:encoded><![CDATA[<p>Not to mention that the example shown in section 1 is particularly gratuitous &#8212; it sounds like you&#8217;ve missed the fundamental point that git doesn&#8217;t have a linear progression of commits; it&#8217;s designed to have a _graph_ of commits. You could, and _should_, have just merged the tree with &#8216;B&#8217;s changes, as git was designed to do.</p>
<p>  B1*&#8212;B2&#8212;&#8212;&#8212;\<br />
  /                 \<br />
A1&#8212;A2&#8212;A3*&#8212;A4&#8212;A5</p>
<p>This preserves the ordering of commits and merges, and reflects the fact that changes B1 and B2 were designed, committed and tested on top of commit A1. And means that &#8216;git-bisect&#8217; works as designed if we later need to track down bugs introduced in these commits.</p>
<p>If developer B wants to use the &#8217;squashing&#8217; trick to combine his patches into one commit, before he&#8217;s ever made them public, that might make sense. But if &#8216;A&#8217; is upstream, or even an intermediate &#8217;subsystem&#8217; tree, and suddenly decides that he&#8217;s going to break his tree and collapse commits &#8216;A1&#8242; and &#8216;A2&#8242; together so that it goes&#8230;</p>
<p> A0&#8212;A2&#8242;&#8212;A3&#8242;&#8212;</p>
<p>&#8230; when other developers were _using_ that tree as a base for further development, then that is really nasty.</p>
<p>&#8220;Rebasing is fine for maintaining *your* own patch set, i.e. it is an alternative to using quilt. But it is absolutely not acceptable for *anything* else.&#8221; &#8212; Linus Torvalds.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: David Woodhouse</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81012</link>
		<pubDate>Thu, 08 May 2008 13:57:31 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-81012</guid>
					<description>It should be mentioned that these tricks (rebasing, squashing, etc.) should be played behind closed doors only. When your tree is public and other people are basing their work on it, it's very bad to rebase or change things around.


"Just say *no* to rebasing" -- Linus Torvalds.

"In particular, people who rebase other peoples trees should just be shot." -- Linus Torvalds.</description>
		<content:encoded><![CDATA[<p>It should be mentioned that these tricks (rebasing, squashing, etc.) should be played behind closed doors only. When your tree is public and other people are basing their work on it, it&#8217;s very bad to rebase or change things around.</p>
<p>&#8220;Just say *no* to rebasing&#8221; &#8212; Linus Torvalds.</p>
<p>&#8220;In particular, people who rebase other peoples trees should just be shot.&#8221; &#8212; Linus Torvalds.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: links for 2008-05-05 &#171; Bloggitation</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-76375</link>
		<pubDate>Sun, 04 May 2008 23:20:24 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-76375</guid>
					<description>[...] Shipping quality code with git (tags: git scm programming) [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Shipping quality code with git (tags: git scm programming) [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Michael DeHaan</title>
		<link>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-74462</link>
		<pubDate>Fri, 02 May 2008 22:10:36 +0000</pubDate>
		<guid>http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/#comment-74462</guid>
					<description>Yay, git!  There are clearly a lot of commands (a gazillion of them), though in practice I find myself not even using many of the ones you mention.

A few other nice ones -- "git-format-patch" and "git-send-email" are clearly outstanding tools for people who want to submit code to projects and are worth a mention.  Ultimately though, you can get a long long long way with just the basics.  For those that want to learn more, see the tutorial here:

http://www.kernel.org/pub/software/scm/git/docs/tutorial.html

Mercurial is also another similar distributed system, but having had it clobber my remote repositories on more than one occasion, I much prefer git.

I often liken it to an Italian sports car -- it's a high performance SCM and much better than your Ford Taurus (SVN), but it does take some time to learn how to drive it properly.  And it is probably easier for a newb to get wrapped around a tree.  But wouldn't you rather have the sports car?



</description>
		<content:encoded><![CDATA[<p>Yay, git!  There are clearly a lot of commands (a gazillion of them), though in practice I find myself not even using many of the ones you mention.</p>
<p>A few other nice ones &#8212; &#8220;git-format-patch&#8221; and &#8220;git-send-email&#8221; are clearly outstanding tools for people who want to submit code to projects and are worth a mention.  Ultimately though, you can get a long long long way with just the basics.  For those that want to learn more, see the tutorial here:</p>
<p><a href="http://www.kernel.org/pub/software/scm/git/docs/tutorial.html" rel="nofollow">http://www.kernel.org/pub/software/scm/git/docs/tutorial.html</a></p>
<p>Mercurial is also another similar distributed system, but having had it clobber my remote repositories on more than one occasion, I much prefer git.</p>
<p>I often liken it to an Italian sports car &#8212; it&#8217;s a high performance SCM and much better than your Ford Taurus (SVN), but it does take some time to learn how to drive it properly.  And it is probably easier for a newb to get wrapped around a tree.  But wouldn&#8217;t you rather have the sports car?
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
