git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@mit.edu>
To: Pierre Habouzit <madcoder@debian.org>
Cc: Sam Vilain <sam@vilain.net>,
	git@vger.kernel.org, Sam Vilain <samv@vilain.net>
Subject: Re: [PATCH] Documentation: add a planning document for the next CLI revamp
Date: Thu, 30 Oct 2008 12:30:56 -0400	[thread overview]
Message-ID: <20081030163056.GA8899@mit.edu> (raw)
In-Reply-To: <20081030144321.GF24098@artemis.corp>

On Thu, Oct 30, 2008 at 03:43:21PM +0100, Pierre Habouzit wrote:
> 
> git format-patch origin/next.. works already. I'm used to the asymetric
> git format-patch origin/next syntax, and I would be sorry if it
> disappeared though, and I see no really good reason to get rid of it.

The reason why it annoys me is because I often what to cherry-pick a
single patch to send to someone, and so while "git show 332d2e78"
shows me the patch, but if I want to use git-send-email for that
particular patch, "git format-patch 332d2e78" doesn't DTRT.  I have to
type "git format-patch 332d2e78^..332d2e78" instead.  I've learned to
live with it, but it's annoying each time I have to do it.

More generally, the fact that the CLI has different ways the same set
of arguments can be decoded can be quite confusing.  The most obvious
way this turns up is to consider which set of commits are
displayed/formatted via these three commands:

   git format-patch 332d2e78
   git show 332d2e78
   git log -p 332d2e78

The first formats all patches that follow commit 332d2e78 (not
including commit 332d2e78), the second shows just commit 332d2e78, and
the last prints all commits starting at 332d2e78 and before it.

For many workflows, the default way a single commit-id is interpreted
makes a lot of sense.  But for a newcomer, it's very confusing.  I'm
not saying that we should collapse everything down to a single way of
doing things, but git format-patch is an exception, and I don't think
anything else actually works that way; looking at the man page makes
it clear that it treats its argument as a revision range EXCEPT when
only a single commit is specified.

It can be justified, and maybe it's convenient enough that this is one
of those places where tutorials should just explicitly call this out
as one of those exceptions that make sense given common workflows.
But just as English can be heard to learn because "though", "through",
"plough", "cough", and "tough" don't rhyme even though they look like
they should (even though native speakers have no problem with it),
similarly this is one of those inconsistencies that makes git hard to
learn.  

(And I get annoyed when I want to run git format-patch on a single
patch not at the tip of the tree; but if it's just me, I can write a
"git format-single-patch" wrapper script to get around it.)

     	      	       		     	    	 - Ted

  reply	other threads:[~2008-10-30 16:32 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-30  3:48 [PATCH] Documentation: add a planning document for the next CLI revamp Sam Vilain
2008-10-30 10:55 ` Stefan Karpinski
2008-10-31 11:38   ` Kyle Moffett
2008-10-30 13:24 ` Pierre Habouzit
2008-10-30 15:25   ` Julian Phillips
2008-10-31  0:34   ` Jeff King
2008-11-02 21:53   ` Junio C Hamano
2008-11-03 13:47     ` Pierre Habouzit
2008-10-30 14:34 ` Nicolas Pitre
2008-10-30 14:52   ` Shawn O. Pearce
2008-10-30 14:59     ` Mike Hommey
2008-10-30 15:01       ` Pierre Habouzit
2008-10-30 16:53         ` Nicolas Pitre
2008-10-30 17:31           ` Sam Vilain
2008-10-30 18:28             ` Nicolas Pitre
2008-10-30 22:46               ` Yann Dirson
2008-10-30 23:28               ` Sam Vilain
2008-10-30 23:55             ` Jakub Narebski
2008-10-31  6:51               ` Sam Vilain
2008-10-31  7:36                 ` Jakub Narebski
2008-11-03  8:43                   ` Sam Vilain
2008-11-03 12:06                     ` Jakub Narebski
2008-11-01  0:37         ` Johannes Schindelin
2008-10-30 14:39 ` Theodore Tso
2008-10-30 14:43   ` Pierre Habouzit
2008-10-30 16:30     ` Theodore Tso [this message]
2008-10-30 16:43       ` Pierre Habouzit
2008-10-30 17:44         ` Sam Vilain
2008-10-30 17:03       ` Nicolas Pitre
2008-11-02  6:08       ` Junio C Hamano
2008-11-02 10:09         ` Theodore Tso
2008-10-30 15:02   ` Andreas Ericsson
2008-11-01 19:57     ` Elijah Newren
2008-10-30 15:20   ` Matthieu Moy
2008-10-30 17:00     ` Nicolas Pitre
2008-10-30 17:03       ` Pierre Habouzit
2008-10-30 17:17         ` Nicolas Pitre
2008-10-30 18:06           ` Sam Vilain
2008-11-02 22:17         ` Junio C Hamano
2008-11-03  6:01           ` Sam Vilain
2008-11-01 19:42     ` Elijah Newren
2008-10-30 17:51   ` Sam Vilain
2008-10-30 23:27     ` Theodore Tso
2008-11-01 20:27     ` Elijah Newren
2008-11-02  1:06       ` Theodore Tso
2008-11-02  4:41         ` Elijah Newren
2008-11-01 19:26   ` Elijah Newren
2008-11-02 22:01   ` Junio C Hamano
2008-11-01 18:36 ` Elijah Newren
     [not found] <20081030002239.D453B21D14E@mail.utsl.gen.nz>
2008-10-31  0:31 ` Jeff King
2008-10-31  6:40   ` Sam Vilain
2008-10-31  8:20     ` Pierre Habouzit
2008-11-02  4:18     ` Jeff King
2008-11-02  9:56       ` Theodore Tso
2008-10-31 16:46   ` Johannes Schindelin
2008-11-02  3:42     ` Jeff King
2008-11-02  3:53   ` Jeff King
2008-11-02 22:27   ` Junio C Hamano
2008-11-03  5:59     ` Sam Vilain
2008-11-03  9:48       ` Jakub Narebski
2008-11-03  9:53         ` Sverre Rabbelier
2008-11-04  9:18       ` Dmitry Potapov
2008-11-04 18:10         ` Sam Vilain
2008-11-04 19:46           ` Junio C Hamano
2008-11-05  3:05             ` Jeff King
2008-11-05  6:40               ` Junio C Hamano
2008-11-05 22:53           ` Dmitry Potapov
2008-11-03  6:56     ` Jeff King
2008-11-03  6:59       ` Jeff King
2008-11-03  9:25     ` Pierre Habouzit
2008-11-03 23:33       ` Junio C Hamano
2008-11-04  0:02         ` Pierre Habouzit
2008-11-04  0:44           ` Junio C Hamano
2008-11-04  5:20         ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081030163056.GA8899@mit.edu \
    --to=tytso@mit.edu \
    --cc=git@vger.kernel.org \
    --cc=madcoder@debian.org \
    --cc=sam@vilain.net \
    --cc=samv@vilain.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).