All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Stefan Beller <sbeller@google.com>
Cc: Jonathan Nieder <jrnieder@gmail.com>,
	"git\@vger.kernel.org" <git@vger.kernel.org>,
	Jens Lehmann <Jens.Lehmann@web.de>,
	Duy Nguyen <pclouds@gmail.com>
Subject: Re: [PATCH 11/15] diff: ignore submodules excluded by groups
Date: Thu, 05 May 2016 23:08:53 -0700	[thread overview]
Message-ID: <xmqqa8k37m6i.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <xmqqfutw85oz.fsf@gitster.mtv.corp.google.com> (Junio C. Hamano's message of "Thu, 05 May 2016 16:07:24 -0700")

Junio C Hamano <gitster@pobox.com> writes:

> The set of submodules you "init" to the working tree are the ones
> that are interesting to you.  So once the tree is populated, you do
> not ever have to look at the "defaultGroup" configuration.  You just
> need to look at the working tree.
> ...

I forgot to prefix the first few paragraphs of that message with
"Here is how my version of the world should work."  I did not mean
to say "Here is how you must make your work work, or I won't talk to
you."  I was just hurried as I had to tend to other topics.

I actually do not care too deeply (except for the "automatically
remove" part, which I do not think we should do), as I do not think
there is a big fundamental difference between the two views.  To
make sure we are on the same page, let me rephrase the two views I
have in mind.

The difference is what should happen when the user does not give any
pathspec, *label, or :name to limit the set of submodules to act on,
which, traditionally meant to work on everything, and we are trying
to change that to some "default".

 (1) The default set is what the configuration file says is the
     default group.  The working tree state is ignored.

 (2) The default set is what the configuration file says is the
     default group, plus those the user showed interest by doing
     "submodule init".

Suppose that the user has a mostly satisfactory default configured,
i.e. the set of submodules the configuration file says is the default
is both necessary and sufficient to carry out her daily task.  Then
there is no difference between the two.

Further suppose that the user needs to view a submodule outside the
default group temporarily (imagine: for a day or two), while
carrying out some specific task.  Perhaps she is working on the
documentation submodule, which is her primary task hence her
configuration file specifies it as the default, but needs to see the
submodule that houses the implementation to describe the behaviour.

So she does "init code-module/"; this has explicit pathspec, so
there is no difference between the two.  Now, while reading the code
module, she finds a typo in a comment, and wants to fix it.  We will
start to see differences.

 * When she wants to get a bird's eye view of everything she cares
   about at the moment, i.e. wants to view the state of her usual
   modules plus the code-module she is visiting, (1) is more
   cumbersome.

   With (1), "diff --recursive" will not step outside of her
   configured default, so she says "diff --recursive \*default
   code-module/" to say "I want to see both my default submodule(s)
   and the one I checked out by hand".

   With (2), she does not have to do anything special, as manually
   checked out code-module/ will be acted upon, in addition to the
   configured default.


 * When she wants to see her usual modules ignoring the one-off
   checkout, (1) is easier.

   With (1), she can say "diff --recursive" and done. 

   With (2), she needs to say "diff --recursive \*default" to
   explicitly state "I may have checkouts of other submodules, but
   this time I want to view only the usual default of mine".

The difference is not that big either case.

Whichever way we choose to make the default behaviour, the user
needs to type a bit extra when asking a behaviour that is different
from the default behaviour.

The amount of "extra" in the first use case necessary for (1) is
greater than the amount of "extra" in the second use case necessary
for (2), though.  In addition, in the second use case, (1) makes it
easier for the user to miss important changes she made outside the
area of her usual attention, while (2) forces her to make a
conscious effort to exclude them.  These are the reasons why I have
a slight preference for (2) over (1).

  reply	other threads:[~2016-05-06  6:09 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26 20:50 [PATCH 00/15] submodule groups (once again) Stefan Beller
2016-04-26 20:50 ` [PATCH 01/15] string_list: add string_list_duplicate Stefan Beller
2016-04-26 22:37   ` Junio C Hamano
2016-04-27 18:02     ` Stefan Beller
2016-04-27 21:11       ` Junio C Hamano
2016-04-27 21:17         ` Stefan Beller
2016-04-27 23:17           ` Junio C Hamano
2016-04-27 23:24             ` Stefan Beller
2016-04-26 20:50 ` [PATCH 02/15] submodule doc: write down what we want to achieve in this series Stefan Beller
2016-04-26 22:42   ` Junio C Hamano
2016-04-26 20:50 ` [PATCH 03/15] submodule add: label submodules if asked to Stefan Beller
2016-04-26 22:49   ` Junio C Hamano
2016-04-26 22:50   ` Jacob Keller
2016-04-26 23:19     ` Stefan Beller
2016-04-27  3:24       ` Jacob Keller
2016-04-26 20:50 ` [PATCH 04/15] submodule-config: keep labels around Stefan Beller
2016-04-26 20:50 ` [PATCH 05/15] submodule-config: check if submodule a submodule is in a group Stefan Beller
2016-04-26 22:58   ` Junio C Hamano
2016-04-26 23:17     ` Junio C Hamano
2016-04-27 23:00       ` Stefan Beller
2016-04-26 20:50 ` [PATCH 06/15] submodule init: redirect stdout to stderr Stefan Beller
2016-04-29 18:27   ` Junio C Hamano
2016-04-29 18:38     ` Stefan Beller
2016-04-26 20:50 ` [PATCH 07/15] submodule deinit: loose requirement for giving '.' Stefan Beller
2016-04-29 18:27   ` Junio C Hamano
2016-04-26 20:50 ` [PATCH 08/15] submodule--helper list: respect submodule groups Stefan Beller
2016-04-29 18:31   ` Junio C Hamano
2016-04-26 20:50 ` [PATCH 09/15] submodule--helper init: " Stefan Beller
2016-04-26 20:50 ` [PATCH 10/15] submodule--helper update_clone: " Stefan Beller
2016-04-26 20:50 ` [PATCH 11/15] diff: ignore submodules excluded by groups Stefan Beller
2016-04-29 18:37   ` Junio C Hamano
2016-04-29 19:17     ` Stefan Beller
2016-05-05 19:57       ` Stefan Beller
2016-05-05 20:19         ` Junio C Hamano
2016-05-05 21:02           ` Stefan Beller
2016-05-05 22:20             ` Junio C Hamano
2016-05-05 22:50               ` Stefan Beller
2016-05-05 23:07                 ` Junio C Hamano
2016-05-06  6:08                   ` Junio C Hamano [this message]
2016-05-06 18:23                     ` Stefan Beller
2016-05-06 18:59                       ` Junio C Hamano
2016-04-26 20:50 ` [PATCH 12/15] git submodule summary respects groups Stefan Beller
2016-04-29 18:38   ` Junio C Hamano
2016-04-26 20:50 ` [PATCH 13/15] cmd_status: respect submodule groups Stefan Beller
2016-04-26 20:50 ` [PATCH 14/15] cmd_diff: " Stefan Beller
2016-04-26 20:50 ` [PATCH 15/15] clone: allow specification of submodules to be cloned Stefan Beller
2016-04-26 22:19 ` [PATCH 00/15] submodule groups (once again) Junio C Hamano
2016-04-26 22:26 ` Junio C Hamano

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=xmqqa8k37m6i.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=sbeller@google.com \
    /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.