<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: In Critique of Git</title>
	<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/</link>
	<description></description>
	<pubDate>Tue, 06 Jan 2009 04:23:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: rob</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-162</link>
		<dc:creator>rob</dc:creator>
		<pubDate>Tue, 04 Dec 2007 10:29:29 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-162</guid>
		<description>@she:
damn right!

@bruce: I'll certainly be submitting some patches for error messages, at least there's clear agreement that there's an issue there.

@sam:
2) The main problem is the collapse of concepts introduced by 1.5 wrt to git add and git remove, and those changes were basically introduced because the concept of the index was unclear.

3) why would that make pull and merge have different behaviour?

4) Thats still not a good argument against having the low-level operations in libexec, with a suitable pkgconfig variable for the location. Hell you can even mitigate backwards compatibility issues by having git-sh-setup add that to the path.

5) find -name 'TODO'
robtaylor@lancastria:~/projects/git/git$

I think there's consensus that a bug tracker is needed, so thats something to take to the ml and help set up.</description>
		<content:encoded><![CDATA[<p>@she:<br />
damn right!</p>
<p>@bruce: I&#8217;ll certainly be submitting some patches for error messages, at least there&#8217;s clear agreement that there&#8217;s an issue there.</p>
<p>@sam:<br />
2) The main problem is the collapse of concepts introduced by 1.5 wrt to git add and git remove, and those changes were basically introduced because the concept of the index was unclear.</p>
<p>3) why would that make pull and merge have different behaviour?</p>
<p>4) Thats still not a good argument against having the low-level operations in libexec, with a suitable pkgconfig variable for the location. Hell you can even mitigate backwards compatibility issues by having git-sh-setup add that to the path.</p>
<p>5) find -name &#8216;TODO&#8217;<br />
robtaylor@lancastria:~/projects/git/git$</p>
<p>I think there&#8217;s consensus that a bug tracker is needed, so thats something to take to the ml and help set up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sam Vilain</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-145</link>
		<dc:creator>Sam Vilain</dc:creator>
		<pubDate>Wed, 28 Nov 2007 02:36:47 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-145</guid>
		<description>1. Agreed.

2. It is called the staging area in the user manual.  It's called the index for a good reason - it's an index of the working copy's files.

3. Branches have Namespaces per remote.  This is a good thing.

4. Git has a command-line API.  That's part of why it's so cool.  Point them at "git help"

5. There is the TODO file in the distribution, you can always submit a patch to that to lodge a longstanding issue that isn't fixed.  what more to you want?  someone else to make the code do what you want?</description>
		<content:encoded><![CDATA[<p>1. Agreed.</p>
<p>2. It is called the staging area in the user manual.  It&#8217;s called the index for a good reason - it&#8217;s an index of the working copy&#8217;s files.</p>
<p>3. Branches have Namespaces per remote.  This is a good thing.</p>
<p>4. Git has a command-line API.  That&#8217;s part of why it&#8217;s so cool.  Point them at &#8220;git help&#8221;</p>
<p>5. There is the TODO file in the distribution, you can always submit a patch to that to lodge a longstanding issue that isn&#8217;t fixed.  what more to you want?  someone else to make the code do what you want?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce Fields</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-129</link>
		<dc:creator>Bruce Fields</dc:creator>
		<pubDate>Tue, 27 Nov 2007 03:34:15 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-129</guid>
		<description>"In general git has some terrible cryptic error messages."

Send patches!  Keep the error messages short, though.  I'm finding the longer error messages grate after a while.  And it's harder to remember the errors and google for them when they're long.  Cryptic is bad, but terse is good....

"The one thing that I think that causes the most problems for users with git is the fact that the index is a first class concept instead of being a hidden power feature. Worse, the thing is NOT explained to users in tutorials"

Not true: see http://www.kernel.org/pub/software/scm/git/docs/tutorial.html.  Or http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#how-to-make-a-commit.

I don't know about tutorials elsewhere, but by now anything in the in-tree git documentation should have a pretty clear explanation of the index right up front.  If you find any exceptions, please point them out and we'll fix them.</description>
		<content:encoded><![CDATA[<p>&#8220;In general git has some terrible cryptic error messages.&#8221;</p>
<p>Send patches!  Keep the error messages short, though.  I&#8217;m finding the longer error messages grate after a while.  And it&#8217;s harder to remember the errors and google for them when they&#8217;re long.  Cryptic is bad, but terse is good&#8230;.</p>
<p>&#8220;The one thing that I think that causes the most problems for users with git is the fact that the index is a first class concept instead of being a hidden power feature. Worse, the thing is NOT explained to users in tutorials&#8221;</p>
<p>Not true: see <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>  Or <a href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#how-to-make-a-commit." rel="nofollow">http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#how-to-make-a-commit.</a></p>
<p>I don&#8217;t know about tutorials elsewhere, but by now anything in the in-tree git documentation should have a pretty clear explanation of the index right up front.  If you find any exceptions, please point them out and we&#8217;ll fix them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PENIX</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-118</link>
		<dc:creator>PENIX</dc:creator>
		<pubDate>Tue, 27 Nov 2007 01:51:03 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-118</guid>
		<description>These are definitely some notable problems. Fortunately, some of them are already in the works to be fixed.</description>
		<content:encoded><![CDATA[<p>These are definitely some notable problems. Fortunately, some of them are already in the works to be fixed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: she</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-107</link>
		<dc:creator>she</dc:creator>
		<pubDate>Mon, 26 Nov 2007 21:44:10 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-107</guid>
		<description>"4. Bug your distro maintainer. Setting gitexecdir in config.mak should work"
That is wrong. Either git should have this behaviour, or not.

It is BAD to make this a job of distros. We all know how split up the communities will become if you leave something in the hand of distro maintainers!</description>
		<content:encoded><![CDATA[<p>&#8220;4. Bug your distro maintainer. Setting gitexecdir in config.mak should work&#8221;<br />
That is wrong. Either git should have this behaviour, or not.</p>
<p>It is BAD to make this a job of distros. We all know how split up the communities will become if you leave something in the hand of distro maintainers!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elijah Newren</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-103</link>
		<dc:creator>Elijah Newren</dc:creator>
		<pubDate>Mon, 26 Nov 2007 13:59:34 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-103</guid>
		<description>The one thing that I think that causes the most problems for users with git is the fact that the index is a first class concept instead of being a hidden power feature.  Worse, the thing is NOT explained to users in tutorials, leaving users to assume that git acts like other VCSes when it doesn't.  I wrote up
 http://www.gnome.org/~newren/temp/blog-entries/limbo.html
(which I'll be posting to my blog in a couple weeks.)  I had Thomas Thurman read over my various posts (others are reachable from http://www.gnome.org/~newren/temp/blog-entries/topics.html, though some are now obsoleted by actual blog posts), and his comment on that page about git was, "Oh, that's why I could never figure git out.  I understand it now."  I don't think renaming is enough.  It *NEEDS* to be explained if it remains a first class concept.

Oh, and yes, I've read the git archives about this subject.  I disagree with Carl's suggestion there.  He wanted to only change the default behavior of commit, which would make git have no consistent model.  I'd prefer that either (a) the index be explained up front to new users instead of being ignored (this includes explicitly listing gotchas associated with it), or (b) the index be made a second class citizen (i.e. available only with extra options) for _all_ commands.  Whatever happens, the choice needs to be consistent and it needs to be explained up front.  (I also think other VCSes need to explain the "you need to explicitly 'vcs add ' gotcha upfront and do a disservice to users by ignoring this gotcha until later.)</description>
		<content:encoded><![CDATA[<p>The one thing that I think that causes the most problems for users with git is the fact that the index is a first class concept instead of being a hidden power feature.  Worse, the thing is NOT explained to users in tutorials, leaving users to assume that git acts like other VCSes when it doesn&#8217;t.  I wrote up<br />
 <a href="http://www.gnome.org/~newren/temp/blog-entries/limbo.html" rel="nofollow">http://www.gnome.org/~newren/temp/blog-entries/limbo.html</a><br />
(which I&#8217;ll be posting to my blog in a couple weeks.)  I had Thomas Thurman read over my various posts (others are reachable from <a href="http://www.gnome.org/~newren/temp/blog-entries/topics.html," rel="nofollow">http://www.gnome.org/~newren/temp/blog-entries/topics.html,</a> though some are now obsoleted by actual blog posts), and his comment on that page about git was, &#8220;Oh, that&#8217;s why I could never figure git out.  I understand it now.&#8221;  I don&#8217;t think renaming is enough.  It *NEEDS* to be explained if it remains a first class concept.</p>
<p>Oh, and yes, I&#8217;ve read the git archives about this subject.  I disagree with Carl&#8217;s suggestion there.  He wanted to only change the default behavior of commit, which would make git have no consistent model.  I&#8217;d prefer that either (a) the index be explained up front to new users instead of being ignored (this includes explicitly listing gotchas associated with it), or (b) the index be made a second class citizen (i.e. available only with extra options) for _all_ commands.  Whatever happens, the choice needs to be consistent and it needs to be explained up front.  (I also think other VCSes need to explain the &#8220;you need to explicitly &#8216;vcs add &#8216; gotcha upfront and do a disservice to users by ignoring this gotcha until later.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rob</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-102</link>
		<dc:creator>rob</dc:creator>
		<pubDate>Mon, 26 Nov 2007 08:28:30 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-102</guid>
		<description>On 4:
@pclouds: Wow, i've never noticed that before. this is spot-on perfect. Distros! Heads up!
@josh: I guess the backwards compatibility concern is the reason this isn't enabled by default. Shame!
@gregf: looks like this build option gives you what you want, command completion for commands humans can use.

On 2:
@pcclouds: thanks for the heads up!
http://news.gmane.org/find-root.php?message_id=%3c7vpsb36yem.fsf%40assigned%2dby%2ddhcp.cox.net%3e

This idea was put down heaviliy it seems, showing a *deep* lack of understanding of learning curve. What can we do?
Check out this *lovely* quote... "So i think having the default geared towards advanced users and not newbie users is O.K.". Thanks guys.... This thread makes me feel really sorry (and thankful!) for Carl.

@josh: yep, in some sense it was better with git-update-index as concepts weren't collapsed. I n terms of history, i prefer it back in really early git when it was called a cache ;)

regarding 3.1, what is the sense in having a local pull be any different to a merge?

good to see there's agreement on 1, 3.2 and 5 though!</description>
		<content:encoded><![CDATA[<p>On 4:<br />
@pclouds: Wow, i&#8217;ve never noticed that before. this is spot-on perfect. Distros! Heads up!<br />
@josh: I guess the backwards compatibility concern is the reason this isn&#8217;t enabled by default. Shame!<br />
@gregf: looks like this build option gives you what you want, command completion for commands humans can use.</p>
<p>On 2:<br />
@pcclouds: thanks for the heads up!<br />
<a href="http://news.gmane.org/find-root.php?message_id=%3c7vpsb36yem.fsf%40assigned%2dby%2ddhcp.cox.net%3e" rel="nofollow">http://news.gmane.org/find-root.php?message_id=%3c7vpsb36yem.fsf%40assigned%2dby%2ddhcp.cox.net%3e</a></p>
<p>This idea was put down heaviliy it seems, showing a *deep* lack of understanding of learning curve. What can we do?<br />
Check out this *lovely* quote&#8230; &#8220;So i think having the default geared towards advanced users and not newbie users is O.K.&#8221;. Thanks guys&#8230;. This thread makes me feel really sorry (and thankful!) for Carl.</p>
<p>@josh: yep, in some sense it was better with git-update-index as concepts weren&#8217;t collapsed. I n terms of history, i prefer it back in really early git when it was called a cache <img src='http://blog.floopily.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>regarding 3.1, what is the sense in having a local pull be any different to a merge?</p>
<p>good to see there&#8217;s agreement on 1, 3.2 and 5 though!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-101</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Mon, 26 Nov 2007 03:27:59 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-101</guid>
		<description>Regarding item 1: I agree.  Git 1.5 improved numerous messages, but more need improving.  This gets better all the time.  If you see a specific message that should become clearer, report it upstream (ideally with a patch, as message changes require very little work), or report it to Debian.

Regarding item 2: actually, Git started out that way.  While it always went by the name "index", at one point you had to use separate commands to update it, such as "git update-index" rather than "git add".  This changed with Git 1.5, for the better.  Now you can universally say that "git add" adds content, whether a new file or new contents for an existing file.  I do agree that "commit staging area" makes more sense, though.

Regarding item 3.1: you should use git merge for all branches, local or remote.  "git pull . branchname" makes less sense as a means to invoke a merge operation, and no longer works for remote branches.  (Honestly, I've stopped using pull altogether; I fetch, and then either merge or rebase after glancing over the changes.)

Regarding item 3.2: sure, those alternatives make sense, so how about proposing them as alternatives?  "git remote branches remotename" makes sense, "git remote branches" with no remote to show all branches makes sense, and "git branch --remote" makes sense as the long form of "git branch -r".

Regarding item 4: how do you know that most people don't use the "low-level commands"?  What do you define as "low-level commands"?  Quite frequently, a new command comes along that makes other commands "low-level" by providing a more user-friendly, high-level alternative.  Should the old commands immediately move to libexec?  What about scripts that people wrote; they will almost always need to add libexec to the PATH, because they should almost always use the "low-level" commands.  That said, I do agree that some commands almost universally don't need to remain in the default PATH for the vast majority of users, but I think backward compatibility makes this difficult.

Regarding item 5: I agree wholeheartedly.  I have actually taken to reporting Git issues in the Debian BTS, for exactly this reason: so they don't get lost.</description>
		<content:encoded><![CDATA[<p>Regarding item 1: I agree.  Git 1.5 improved numerous messages, but more need improving.  This gets better all the time.  If you see a specific message that should become clearer, report it upstream (ideally with a patch, as message changes require very little work), or report it to Debian.</p>
<p>Regarding item 2: actually, Git started out that way.  While it always went by the name &#8220;index&#8221;, at one point you had to use separate commands to update it, such as &#8220;git update-index&#8221; rather than &#8220;git add&#8221;.  This changed with Git 1.5, for the better.  Now you can universally say that &#8220;git add&#8221; adds content, whether a new file or new contents for an existing file.  I do agree that &#8220;commit staging area&#8221; makes more sense, though.</p>
<p>Regarding item 3.1: you should use git merge for all branches, local or remote.  &#8220;git pull . branchname&#8221; makes less sense as a means to invoke a merge operation, and no longer works for remote branches.  (Honestly, I&#8217;ve stopped using pull altogether; I fetch, and then either merge or rebase after glancing over the changes.)</p>
<p>Regarding item 3.2: sure, those alternatives make sense, so how about proposing them as alternatives?  &#8220;git remote branches remotename&#8221; makes sense, &#8220;git remote branches&#8221; with no remote to show all branches makes sense, and &#8220;git branch &#8211;remote&#8221; makes sense as the long form of &#8220;git branch -r&#8221;.</p>
<p>Regarding item 4: how do you know that most people don&#8217;t use the &#8220;low-level commands&#8221;?  What do you define as &#8220;low-level commands&#8221;?  Quite frequently, a new command comes along that makes other commands &#8220;low-level&#8221; by providing a more user-friendly, high-level alternative.  Should the old commands immediately move to libexec?  What about scripts that people wrote; they will almost always need to add libexec to the PATH, because they should almost always use the &#8220;low-level&#8221; commands.  That said, I do agree that some commands almost universally don&#8217;t need to remain in the default PATH for the vast majority of users, but I think backward compatibility makes this difficult.</p>
<p>Regarding item 5: I agree wholeheartedly.  I have actually taken to reporting Git issues in the Debian BTS, for exactly this reason: so they don&#8217;t get lost.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: http://pclouds.myopenid.com/</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-100</link>
		<dc:creator>http://pclouds.myopenid.com/</dc:creator>
		<pubDate>Mon, 26 Nov 2007 02:54:35 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-100</guid>
		<description>2. This has been discussed on git mailing list, please search the archive
4. Bug your distro maintainer. Setting gitexecdir in config.mak should work

As for the rest, yes I'd like to see discussions on git mailing list :)</description>
		<content:encoded><![CDATA[<p>2. This has been discussed on git mailing list, please search the archive<br />
4. Bug your distro maintainer. Setting gitexecdir in config.mak should work</p>
<p>As for the rest, yes I&#8217;d like to see discussions on git mailing list <img src='http://blog.floopily.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gregf</title>
		<link>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-99</link>
		<dc:creator>gregf</dc:creator>
		<pubDate>Mon, 26 Nov 2007 01:52:06 +0000</pubDate>
		<guid>http://blog.floopily.org/2007/11/26/in-critique-of-git/#comment-99</guid>
		<description>I'll agree with everything you say except for #4. I always enjoyed having all the git- tools right there and being in my path. Easy to tab complete. I also thought it made learning git easier. I was not always loading up a man page figure something out. Seemed commands were right there at my finger tips. I would hit git-. Oh, pull that probably does what I want.</description>
		<content:encoded><![CDATA[<p>I&#8217;ll agree with everything you say except for #4. I always enjoyed having all the git- tools right there and being in my path. Easy to tab complete. I also thought it made learning git easier. I was not always loading up a man page figure something out. Seemed commands were right there at my finger tips. I would hit git-. Oh, pull that probably does what I want.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
