<?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: Git needs a new interface</title>
	<atom:link href="http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/</link>
	<description>parsing, performance, minimalism with C99</description>
	<lastBuildDate>Mon, 06 Feb 2012 23:44:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Scott</title>
		<link>http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/comment-page-1/#comment-1465</link>
		<dc:creator>Scott</dc:creator>
		<pubDate>Tue, 06 Oct 2009 03:01:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=257#comment-1465</guid>
		<description>Have you heard of easy-git?  It&#039;s a porcelain with a much simpler interface. (http://www.gnome.org/~newren/eg/)

Mercurial has the same &quot;You canâ€™t merge upstream changes into your local, uncommitted modifications&quot; issue, and it&#039;s also annoying as hell.  I have yet to find a workflow that doesn&#039;t piss me off.  If git offered one, I&#039;d almost certainly switch.
 
Stashing is not a great solution, either - unless un-stashing lets you do a nice 3-way merge - with all the same flexibility as a normal merge.  Mercurial&#039;s equivalent (shelve) sucks, because you end up running some external tool like patch - which leaves little unapplied patches around when a patch fails, instead of the traditional merge - which lets you see both versions of the code.</description>
		<content:encoded><![CDATA[<p>Have you heard of easy-git?  It&#8217;s a porcelain with a much simpler interface. (<a href="http://www.gnome.org/~newren/eg/" rel="nofollow">http://www.gnome.org/~newren/eg/</a>)</p>
<p>Mercurial has the same &#8220;You canâ€™t merge upstream changes into your local, uncommitted modifications&#8221; issue, and it&#8217;s also annoying as hell.  I have yet to find a workflow that doesn&#8217;t piss me off.  If git offered one, I&#8217;d almost certainly switch.</p>
<p>Stashing is not a great solution, either &#8211; unless un-stashing lets you do a nice 3-way merge &#8211; with all the same flexibility as a normal merge.  Mercurial&#8217;s equivalent (shelve) sucks, because you end up running some external tool like patch &#8211; which leaves little unapplied patches around when a patch fails, instead of the traditional merge &#8211; which lets you see both versions of the code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/comment-page-1/#comment-1417</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Fri, 31 Jul 2009 16:55:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=257#comment-1417</guid>
		<description>@Luca: If it was called &quot;revert&quot;, I wouldn&#039;t mind having it throw away my local modifications.  In fact I&#039;d expect it!  But the name is important -- &quot;checkout&quot; just doesn&#039;t sound like a destructive command.  &quot;checkout&quot; is not destructive in cvs or svn.  And it also has a lot of non-destructive uses, like switching branches.  It&#039;s just a UI minefield to have this one particular mode of the &quot;checkout&quot; command act like &quot;revert&quot;.

I&#039;m not too inspired to report this stuff to the Git developers, because my biggest gripes would require major changes to address (like renaming core commands).  There&#039;s no way they&#039;d be receptive to that.  Like I said, what I think Git&#039;s UI needs is a revolutionary, not an evolutionary change.

@Dave: Your point is taken about being confident about the merge.  But I like the Perforce model here (can&#039;t remember if CVS and SVN do this too), where it prompts you for each file that has conflicting changes, and asks if you want to merge right now or not.  If you get cold feed about it, you can always decline to do the merge, then do the stash+apply thing manually.  But going ahead with the merge (especially if the changes don&#039;t have conflicts) is nearly always what I want.

Good suggestion about git-mergetool -- I should use that instead.</description>
		<content:encoded><![CDATA[<p>@Luca: If it was called &#8220;revert&#8221;, I wouldn&#8217;t mind having it throw away my local modifications.  In fact I&#8217;d expect it!  But the name is important &#8212; &#8220;checkout&#8221; just doesn&#8217;t sound like a destructive command.  &#8220;checkout&#8221; is not destructive in cvs or svn.  And it also has a lot of non-destructive uses, like switching branches.  It&#8217;s just a UI minefield to have this one particular mode of the &#8220;checkout&#8221; command act like &#8220;revert&#8221;.</p>
<p>I&#8217;m not too inspired to report this stuff to the Git developers, because my biggest gripes would require major changes to address (like renaming core commands).  There&#8217;s no way they&#8217;d be receptive to that.  Like I said, what I think Git&#8217;s UI needs is a revolutionary, not an evolutionary change.</p>
<p>@Dave: Your point is taken about being confident about the merge.  But I like the Perforce model here (can&#8217;t remember if CVS and SVN do this too), where it prompts you for each file that has conflicting changes, and asks if you want to merge right now or not.  If you get cold feed about it, you can always decline to do the merge, then do the stash+apply thing manually.  But going ahead with the merge (especially if the changes don&#8217;t have conflicts) is nearly always what I want.</p>
<p>Good suggestion about git-mergetool &#8212; I should use that instead.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/comment-page-1/#comment-1416</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Fri, 31 Jul 2009 16:22:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=257#comment-1416</guid>
		<description>&gt; &quot;But why should I have to do this? CVS, SVN, and P4 donâ€™t make me.&quot;

One reason is that this way you can confidently abort the merge.  Git needs some state to which it can reset your working directory if you decide that the pull or the merging from the pull was a big mistake.  You could make an argument that git ought to be able to do the equivalent of a &quot;git stash&quot; for you when merging, then apply the changes, and pop the stash with merging for you automatically.  But it doesn&#039;t do that.  And I think that might actually be more confusing to some people, so I&#039;m not sure it&#039;s the right thing to do.  My preference is almost always to fetch and then perform the merge or rebase as a separate step anyway.

As for the individual file merging, you should check out git-mergetool.  It will pop you into a three way vimdiff (or whatever your preferred tool is) and then mark the file as resolved when you are done editing it.  I find this much easier than actually figuring out which files are conflicting and editing them directly by hand, then resolving them by hand.

I agree about checkout and reset.  They are too overloaded and the reset flavors are difficult to remember.  This is probably one of the worst parts of the UI, especially since these commands can be so destructive.</description>
		<content:encoded><![CDATA[<p>&gt; &#8220;But why should I have to do this? CVS, SVN, and P4 donâ€™t make me.&#8221;</p>
<p>One reason is that this way you can confidently abort the merge.  Git needs some state to which it can reset your working directory if you decide that the pull or the merging from the pull was a big mistake.  You could make an argument that git ought to be able to do the equivalent of a &#8220;git stash&#8221; for you when merging, then apply the changes, and pop the stash with merging for you automatically.  But it doesn&#8217;t do that.  And I think that might actually be more confusing to some people, so I&#8217;m not sure it&#8217;s the right thing to do.  My preference is almost always to fetch and then perform the merge or rebase as a separate step anyway.</p>
<p>As for the individual file merging, you should check out git-mergetool.  It will pop you into a three way vimdiff (or whatever your preferred tool is) and then mark the file as resolved when you are done editing it.  I find this much easier than actually figuring out which files are conflicting and editing them directly by hand, then resolving them by hand.</p>
<p>I agree about checkout and reset.  They are too overloaded and the reset flavors are difficult to remember.  This is probably one of the worst parts of the UI, especially since these commands can be so destructive.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luca</title>
		<link>http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/comment-page-1/#comment-1415</link>
		<dc:creator>Luca</dc:creator>
		<pubDate>Fri, 31 Jul 2009 14:30:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=257#comment-1415</guid>
		<description>I think the Git interface is great, but you are right about some of that details.

I think git checkout is ok to overwrite the file, it&#039;s what its supposed to do (it&#039;s the &quot;svn revert&quot; for Git, &quot;svn revert&quot; don&#039;t ask for your permission either), but I don&#039;t see why a merge couldn&#039;t be performed when the working copy is dirty, that would be helpful.

About the merge conflict, I think its similar to svn too, you have to mark your conflicted files &quot;resolved&quot; before committing (in Git you do a git add). The error message can be a little better though. About checking out a file that&#039;s not merged yet, I&#039;m not sure =)

I have trouble remembering what the different flavors of reset do.

You should try to report all this stuff to the Git developers, they are very receptive and very concerned about usability (Git has made *huge* improvements to the usability).

You can also fill the Git Survey 2009 too to express yourself =)
http://www.survs.com/survey?id=2PIMZGU0&amp;channel=Q0EKJ3NF54</description>
		<content:encoded><![CDATA[<p>I think the Git interface is great, but you are right about some of that details.</p>
<p>I think git checkout is ok to overwrite the file, it&#8217;s what its supposed to do (it&#8217;s the &#8220;svn revert&#8221; for Git, &#8220;svn revert&#8221; don&#8217;t ask for your permission either), but I don&#8217;t see why a merge couldn&#8217;t be performed when the working copy is dirty, that would be helpful.</p>
<p>About the merge conflict, I think its similar to svn too, you have to mark your conflicted files &#8220;resolved&#8221; before committing (in Git you do a git add). The error message can be a little better though. About checking out a file that&#8217;s not merged yet, I&#8217;m not sure =)</p>
<p>I have trouble remembering what the different flavors of reset do.</p>
<p>You should try to report all this stuff to the Git developers, they are very receptive and very concerned about usability (Git has made *huge* improvements to the usability).</p>
<p>You can also fill the Git Survey 2009 too to express yourself =)<br />
<a href="http://www.survs.com/survey?id=2PIMZGU0&#038;channel=Q0EKJ3NF54" rel="nofollow">http://www.survs.com/survey?id=2PIMZGU0&#038;channel=Q0EKJ3NF54</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathan Youngman</title>
		<link>http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/comment-page-1/#comment-1413</link>
		<dc:creator>Nathan Youngman</dc:creator>
		<pubDate>Fri, 31 Jul 2009 00:40:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/?p=257#comment-1413</guid>
		<description>Git is what I&#039;ll be using at work, but I&#039;m continuing to use Mercurial for home projects. Perhaps not as flexible/powerful in some ways, but I quite like the interface thus far. Peepcode has an intro screencast on Hg, and Bryan O&#039;Sullivan&#039;s book is online for free.</description>
		<content:encoded><![CDATA[<p>Git is what I&#8217;ll be using at work, but I&#8217;m continuing to use Mercurial for home projects. Perhaps not as flexible/powerful in some ways, but I quite like the interface thus far. Peepcode has an intro screencast on Hg, and Bryan O&#8217;Sullivan&#8217;s book is online for free.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

