From: Jens Lehmann <Jens.Lehmann@web.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: [1.8.0] Handle submodule config options consistently in diff plumbing
Date: Tue, 01 Feb 2011 22:41:11 +0100 [thread overview]
Message-ID: <4D487DF7.8060109@web.de> (raw)
In-Reply-To: <7vwrll57ha.fsf@alter.siamese.dyndns.org>
Proposal:
Handle the submodule options "diff.ignoreSubmodules" and
"submodule.<name>.ignore" consistently in diff plumbing.
I see two basic ways to change the behavior of the plumbing diff
commands:
a) Let them use the "diff.ignoreSubmodules" configuration too.
b) Don't let them use the "submodule.<name>.ignore" entries either.
But if we go that way, we might have to revert the default of
recursing into populated submodules too, as it might cause
unexpected behavior when all configuration options introduced
to control that recursion are just ignored unless explicitly
told otherwise.
History:
When the submodule recursion for the diff commands was introduced,
all diff commands - including plumbing - learned to recurse into
submodules by default. This was done to mark submodules with
uncommitted changes as dirty so no user could accidentally forget
to commit his changes there before pushing in the superproject.
Some time after that "--ignore-submodules" learned some values to
achieve more control over what conditions mark a submodule dirty.
Then the "submodule.<name>.ignore" option was added to .git/config
and the .gitmodules file to to be able to specify these values for
one or more submodules. In a later commit the "diff.ignoreSubmodules"
option was added, but the plumbing diff commands weren't taught to
use that config option.
Risks:
a) Those scripts which depend on the plumbing commands to ignore
the setting from "diff.ignoreSubmodules" will break.
b) All scripts written or changed since 1.7.0 which depend on the
current behavior to recurse into submodules and use the
"submodule.<name>.ignore" entries will be broken.
Me thinks the risks are much smaller when doing a), as people who
learned to use the recursive behavior since 1.7.0 will see that
changed under their feet when we do b) and I expect much more code
to rely on the recursion than on the "diff.ignoreSubmodules"
setting. And doing a) would fix a real life problem too, see [1].
Migration plan:
a) During the 1.7.x series a new "noconfig" value is added for the
"--ignore-submodules" command line option for people who don't
want user configuration to interfere with the recursion, e.g. in
scripts (turning off the recursion is already implemented, just
use the "--ignore-submodules" option). And then starting with
1.8.0 "diff.ignoreSubmodules" will be used by diff plumbing.
b) During the 1.7.x series a new value for "--ignore-submodules"
called "porcelain" is added which enables recursion and also
tells diff plumbing use all configuration settings. Then all
relevant call sites (like git gui, gitk and PS1 from completion
and others) are changed to use this option. Changing the default
behavior to ignore "submodule.<name>.ignore" and to not recurse
anymore will be done in the 1.8.0 release.
Personally I'm in favor of solution a), but lets hear what other
people say.
[1] http://thread.gmane.org/gmane.comp.version-control.git/164166/focus=164172
next prev parent reply other threads:[~2011-02-01 21:41 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-31 5:53 What's cooking in git.git (Jan 2011, #06; Sun, 30) Junio C Hamano
2011-01-31 15:08 ` Sverre Rabbelier
2011-02-08 17:48 ` Sverre Rabbelier
2011-02-08 19:27 ` Junio C Hamano
2011-01-31 17:05 ` Planning for 1.7.5 and 1.8.0 Junio C Hamano
2011-01-31 17:06 ` [1.8.0] default "git merge" without argument to "git merge @{u}" Junio C Hamano
2011-01-31 20:14 ` Jeff King
2011-01-31 20:17 ` Junio C Hamano
2011-01-31 20:32 ` Felipe Contreras
2011-01-31 20:50 ` [1.8.0] (v2) " Junio C Hamano
2011-01-31 22:55 ` Jeff King
2011-02-01 0:01 ` Thomas Adam
2011-02-01 18:34 ` Scott Chacon
2011-02-01 20:11 ` moving to a git-backed wiki Jeff King
2011-02-01 22:36 ` Jay Soffian
2011-02-01 22:48 ` J.H.
2011-02-02 9:55 ` Vincent Hanquez
2011-02-02 10:53 ` Felipe Contreras
2011-02-02 11:14 ` Jakub Narebski
2011-02-03 2:24 ` J.H.
2011-02-03 17:45 ` Jeff King
2011-02-03 19:06 ` Sverre Rabbelier
2011-02-04 6:03 ` Jeff King
2011-02-03 20:34 ` Felipe Contreras
2011-02-04 6:16 ` Jeff King
2011-02-04 17:50 ` Felipe Contreras
2011-02-04 14:34 ` Joey Hess
2011-02-05 7:00 ` david
2011-02-04 7:31 ` [1.8.0] (v2) default "git merge" without argument to "git merge @{u}" Thomas Hochstein
2011-02-04 23:01 ` [PATCH/RFC] Add support for merging from upstream by default Jared Hance
2011-01-31 17:07 ` [1.8.0] Unify "pathspec" semantics Junio C Hamano
2011-02-01 14:56 ` Nguyen Thai Ngoc Duy
2011-01-31 20:28 ` [1.8.0] reorganize the mess that the source tree has become Nicolas Pitre
2011-01-31 20:57 ` Junio C Hamano
2011-01-31 21:08 ` Matthieu Moy
2011-01-31 21:33 ` Nicolas Pitre
2011-01-31 21:19 ` Nicolas Pitre
2011-01-31 21:00 ` Jeff King
2011-01-31 21:28 ` Nicolas Pitre
2011-01-31 22:17 ` Junio C Hamano
2011-01-31 22:36 ` João P. Sampaio
2011-01-31 22:37 ` Nicolas Pitre
2011-01-31 23:12 ` Jeff King
2011-02-01 0:29 ` Nicolas Pitre
2011-02-01 1:48 ` Jeff King
2011-02-01 4:05 ` Nicolas Pitre
2011-02-01 12:42 ` Thomas Rast
2011-02-01 11:14 ` Jonathan Nieder
2011-02-01 11:22 ` Jonathan Nieder
2011-02-01 13:08 ` Nicolas Pitre
2011-02-01 16:02 ` Nguyen Thai Ngoc Duy
2011-02-01 21:53 ` Junio C Hamano
2011-02-01 0:35 ` Erik Faye-Lund
2011-02-01 1:53 ` Jeff King
2011-02-01 1:00 ` Sverre Rabbelier
2011-02-01 1:57 ` Jeff King
2011-02-01 7:24 ` Jay Soffian
2011-02-01 14:42 ` Andreas Ericsson
2011-01-31 21:59 ` [1.8.0] 't/' is standard name for directory with tests Jakub Narebski
2011-01-31 22:32 ` Nicolas Pitre
2011-02-01 0:12 ` Alex Budovski
2011-02-01 0:33 ` Nicolas Pitre
2011-02-01 0:58 ` Jakub Narebski
2011-02-01 1:15 ` Junio C Hamano
2011-02-02 23:55 ` Sam Vilain
2011-02-01 18:26 ` [1.8.0] split largest remaining scripts, gitk and gitweb Jakub Narebski
2011-02-01 22:15 ` Junio C Hamano
2011-02-01 23:20 ` Jakub Narebski
2011-02-05 3:21 ` [1.8.0] reorganize the mess that the source tree has become Martin von Zweigbergk
2011-01-31 21:44 ` [1.8.0] make two-argument fetch update remote branches Thomas Rast
2011-01-31 22:18 ` Matthieu Moy
2011-01-31 22:24 ` Junio C Hamano
2011-01-31 22:27 ` Eugene Sajine
2011-01-31 23:06 ` Junio C Hamano
2011-01-31 23:39 ` Eugene Sajine
2011-02-01 1:13 ` Junio C Hamano
2011-01-31 23:22 ` Jeff King
2011-02-01 7:04 ` Jay Soffian
2011-02-01 15:58 ` Nguyen Thai Ngoc Duy
2011-02-01 22:09 ` Junio C Hamano
2011-02-01 21:05 ` A Large Angry SCM
2011-02-01 22:39 ` Thomas Rast
2011-02-01 23:25 ` A Large Angry SCM
2011-01-31 21:55 ` [1.8.0] forbid full fetchspecs in git-pull Thomas Rast
2011-01-31 22:38 ` Junio C Hamano
2011-01-31 23:15 ` Dmitry Potapov
2011-02-01 15:14 ` Thomas Rast
2011-02-01 20:23 ` Dmitry Potapov
2011-02-01 3:20 ` Planning for 1.7.5 and 1.8.0 Nguyen Thai Ngoc Duy
2011-02-01 4:16 ` Nicolas Pitre
2011-02-01 14:54 ` [1.8.0] Tag namespaces Marc Branchaud
2011-02-01 15:21 ` Nguyen Thai Ngoc Duy
2011-02-01 18:37 ` [1.8.0] Remove deprecated commands René Scharfe
2011-02-01 22:16 ` Junio C Hamano
2011-02-02 0:57 ` Jonathan Nieder
2011-02-10 19:42 ` René Scharfe
2011-02-10 20:56 ` Jonathan Nieder
2011-02-10 21:08 ` Junio C Hamano
2011-02-12 13:24 ` René Scharfe
2011-02-12 21:04 ` Jonathan Nieder
2011-02-13 23:14 ` Junio C Hamano
2011-02-01 21:41 ` Jens Lehmann [this message]
2011-02-02 11:56 ` [1.8.0] Tracking empty directories Jakub Narebski
2011-02-02 23:23 ` Jay Soffian
2011-02-02 23:33 ` David Aguilar
2011-02-02 23:52 ` Jakub Narebski
2011-02-03 2:21 ` Wesley J. Landaker
2011-02-03 5:53 ` Jonathan Nieder
2011-02-03 10:07 ` Matthieu Moy
2011-02-05 7:43 ` Pete Harlan
2011-02-05 18:31 ` Thomas Koch
2011-02-05 19:00 ` Sverre Rabbelier
2011-02-05 22:37 ` Jared Hance
2011-02-06 20:41 ` Junio C Hamano
2011-02-06 20:46 ` Sverre Rabbelier
2011-02-06 4:42 ` Nguyen Thai Ngoc Duy
2011-02-02 17:23 ` [1.8.0] git-stash invocation changes Thomas Rast
2011-02-02 17:35 ` Shawn Pearce
2011-02-02 18:15 ` Matthieu Moy
2011-02-02 18:51 ` Thomas Rast
2011-02-09 14:35 ` Pat Notz
2011-02-23 19:54 ` [1.8.0] Don't copy "submodule.<name>.update" to .git/config on submodule init Jens Lehmann
2011-02-23 20:28 ` Junio C Hamano
2011-02-23 22:43 ` Jens Lehmann
2011-02-24 0:34 ` Junio C Hamano
2011-02-24 23:44 ` Jens Lehmann
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=4D487DF7.8060109@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 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).