All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: "SZEDER Gábor" <szeder@ira.uka.de>
Cc: Junio C Hamano <gitster@pobox.com>,
	Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
	Sebastian Pipping <webmaster@hartwork.org>,
	Git ML <git@vger.kernel.org>
Subject: Re: "git add -u" broken in git 1.7.4?
Date: Wed, 9 Feb 2011 16:03:12 -0500	[thread overview]
Message-ID: <20110209210312.GB2083@sigill.intra.peff.net> (raw)
In-Reply-To: <20110208100518.GA9505@neumann>

On Tue, Feb 08, 2011 at 11:05:18AM +0100, SZEDER Gábor wrote:

> > I think even the same people may different preferences from project to
> > project. For most of my projects, the scope of the repo is well-defined,
> > and I want full-tree semantics (e.g., I hack on a bug, go into t/ to
> > tweak and run the tests, and then want to "git add -u" the whole thing
> > when everything looks good). But I also recently worked on a gigantic
> > project that was split into several sub-components. I would cd 3 or 4
> > levels deep into the sub-component that I was working on, and I would
> > prefer my "git add -u" to stay in that sub-component, and my "git grep"
> > to look only in that sub-component.
> 
> It sounds like your work focused solely on the sub-component you cd-d
> into.  Did you have any other changes outside of that sub-component?
> Because when not, then both the current and the whole-tree "git add -u"
> would have the same effect.

Yes, I often did have other changes. They were usually one of two types.
The build infrastructure was in a separate directory, so one type would
be local tweaks to the build that should not end up getting committed.
The other type was required changes to another component that would get
committed separately (e.g., while working on component "foo" you realize
that it depends on a new feature in component "bar"; you leave "foo"
modified in the working tree, work on "bar", commit it, then come back
to "foo").

> The current and the whole-tree "git grep" would behave differently, of
> course.  But even then a whole-tree "git grep" would be harmless and
> easy to limit in scope, though might be a bit annoying in the "cd deep
> down" case.  In that case you would immediately see the matches
> outside of cwd, know that you forgot to limit the operation to cwd, so
> you hit the up key, simply append the "." to the last command, and you
> get what you wanted.

Yeah, grep is not as annoying because it does not have the "oops, I just
pushed this commit and it turns out that I screwed up "git add" five
minutes ago and it only had half of the files I intended" problem.

> As mentioned in this or other related threads, this is not at all that
> simple the other way around, i.e. with current "git grep" when you are
> in the sub-component and you happen to need a grep on the whole tree,
> because you have to pay attention to use the right number of "../"s.

Yes, it is annoying, but that is merely a syntactic issue. If we aliased
"/" to "the root of the project", then most arguments for full-tree
could be reversed for the relative case (e.g., "sure, but it's easy
enough to type 'git add /'").

For the record, I would much prefer full-tree behavior as the default,
and I think the '/' syntax is ugly and confusing. If you were asking at
the beginning of "git add -u" what the behavior should be, I would
absolutely say full-tree. But we're not there; we're talking about
changing existing behavior. And I'm not sure there is a clear-cut,
obvious-to-anybody-who-will-annoyed-with-the-change argument that
full-tree behavior is definitively better.

The most compelling I have seen is "you tend to notice accidental
full-tree sooner than accidental relative behavior". Which you mentioned
in your email. I just don't know if that passes the "will satisfy
annoyed users" test.

I dunno. I would not be sad at all if we moved to full-tree defaults
everywhere. I just don't want to have to be the one that annoyed users
yell at. :)

-Peff

  reply	other threads:[~2011-02-09 21:03 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-06  0:39 "git add -u" broken in git 1.7.4? Sebastian Pipping
2011-02-06  5:13 ` Jeff King
2011-02-06 19:35   ` Sebastian Pipping
2011-02-06 20:48     ` Matthieu Moy
2011-02-06 23:19       ` SZEDER Gábor
2011-02-06 23:49         ` Sebastian Pipping
2011-02-07  5:50       ` Junio C Hamano
2011-02-07  5:53         ` Jeff King
2011-02-07  6:46           ` Junio C Hamano
2011-02-07  7:29             ` Nguyen Thai Ngoc Duy
2011-02-07 18:34             ` SZEDER Gábor
2011-02-07 19:31               ` Junio C Hamano
2011-02-07 19:50             ` Jeff King
2011-02-08 10:05               ` SZEDER Gábor
2011-02-09 21:03                 ` Jeff King [this message]
2011-02-09 22:40                   ` Junio C Hamano
2011-02-09 23:46                     ` Jeff King
2011-02-10  2:24                       ` Nguyen Thai Ngoc Duy
2011-02-10  2:31                         ` Jeff King
2011-02-10  2:46                           ` Junio C Hamano
2011-02-10  7:46                       ` Johannes Sixt
2011-02-10  8:13                       ` Joshua Juran
2011-02-10 18:00                       ` Matthieu Moy
2011-02-15  7:04                       ` [PATCH] command-list.txt: mark git-archive plumbing Nguyen Thai Ngoc Duy
2011-02-15 19:11                         ` Junio C Hamano
2011-02-16  9:32                           ` Nguyen Thai Ngoc Duy
2011-02-07 20:57             ` "git add -u" broken in git 1.7.4? Matthieu Moy
2011-02-07 21:02               ` Jeff King
2011-02-07 21:49                 ` Junio C Hamano
2011-02-08  1:25             ` Eric Raible
2011-02-08  2:16               ` Junio C Hamano
2011-02-07  6:48           ` Matthieu Moy
2011-02-07  8:27             ` Michael J Gruber
2011-02-07 11:15         ` SZEDER Gábor

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=20110209210312.GB2083@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=szeder@ira.uka.de \
    --cc=webmaster@hartwork.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.