From: Ronald Weiss <weiss.ronald@gmail.com>
To: Jens Lehmann <Jens.Lehmann@web.de>
Cc: git@vger.kernel.org, Heiko Voigt <hvoigt@hvoigt.net>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v2.1] commit: add --ignore-submodules[=<when>] parameter
Date: Tue, 01 Apr 2014 01:35:16 +0200 [thread overview]
Message-ID: <5339FBB4.1010101@gmail.com> (raw)
In-Reply-To: <5339F122.60801@gmail.com>
On 1. 4. 2014 0:50, Ronald Weiss wrote:
> On 31. 3. 2014 23:47, Ronald Weiss wrote:
>> On Mon, Mar 31, 2014 at 8:58 PM, Jens Lehmann <Jens.Lehmann@web.de> wrote:
>>> As Junio mentioned it would be great if you could teach the add
>>> command also honor the --ignore-submodule command line option in
>>> a companion patch. In the course of doing so you'll easily see if
>>> I was right or not, then please just order them in the most logical
>>> way.
>>
>> Well, if You (or Junio) really don't want my patch without another one
>> for git add, I may try to do it. However, git add does not even honor
>> the submodules' ignore setting from .gitmodules (just tested with git
>> 1.9.1: "git add -u" doesn't honor it, while "git commit -a" does). So
>> teaching git add the --ignore-submodules switch in current state
>> doesn't seem right to me. You might propose to add also support for
>> the ignore setting, to make "add -u" and "commit -a" more consistent.
>> That seems like a good idea, but the effort needed is getting bigger,
>
> Well, now I actually looked at it, and it was pretty easy after all.
> The changes below seem to enable support for both ignore setting in
> .gitmodules, and also --ignore-submodules switch, for git add, on top
> of my patch for commit.
There is a catch. With the changes below, submodules are ignored by add
even if explitely named on command line (eg. "git add x" does nothing if
x is submodule with new commits, but with ignore=all in .gitmodules).
That doesn't seem right.
Any ideas, what to do about that? When exactly should such submodule be
actually ignored?
>
> So I'm going to do some more testing, write tests for git add with
> ignoring submodules the various ways, and then post two patches
> rearranged, one for git add, and second for git commit on top of that,
> as you guys suggested. Including the change suggested by Jens, to not
> mess with index_differs_from() in diff-lib.c, that works fine too.
>
>
> diff --git a/builtin/add.c b/builtin/add.c
> index 1086294..9f70327 100644
> --- a/builtin/add.c
> +++ b/builtin/add.c
> @@ -350,6 +350,8 @@ static int ignore_add_errors, intent_to_add, ignore_missing;
> static int addremove = ADDREMOVE_DEFAULT;
> static int addremove_explicit = -1; /* unspecified */
>
> +static char *ignore_submodule_arg;
> +
> static int ignore_removal_cb(const struct option *opt, const char *arg, int unset)
> {
> /* if we are told to ignore, we are not adding removals */
> @@ -375,6 +377,9 @@ static struct option builtin_add_options[] = {
> OPT_BOOL( 0 , "refresh", &refresh_only, N_("don't add, only refresh the index")),
> OPT_BOOL( 0 , "ignore-errors", &ignore_add_errors, N_("just skip files which cannot be added because of errors")),
> OPT_BOOL( 0 , "ignore-missing", &ignore_missing, N_("check if - even missing - files are ignored in dry run")),
> + { OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, N_("when"),
> + N_("ignore changes to submodules, optional when: all, none. (Default: all)"),
> + PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
> OPT_END(),
> };
>
> @@ -422,6 +427,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
> int implicit_dot = 0;
> struct update_callback_data update_data;
>
> + gitmodules_config();
> git_config(add_config, NULL);
>
> argc = parse_options(argc, argv, prefix, builtin_add_options,
> @@ -584,7 +590,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
> memset(&pathspec, 0, sizeof(pathspec));
> }
> update_data.flags = flags & ~ADD_CACHE_IMPLICIT_DOT;
> - update_files_in_cache(prefix, &pathspec, &update_data, NULL);
> + update_files_in_cache(prefix, &pathspec, &update_data, ignore_submodule_arg);
>
> exit_status |= !!update_data.add_errors;
> if (add_new_files)
>
next prev parent reply other threads:[~2014-03-31 23:35 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 23:36 git commit vs. ignore-submodules Ronald Weiss
2014-03-28 16:47 ` Jens Lehmann
2014-03-28 17:59 ` Junio C Hamano
2014-03-29 22:44 ` Ronald Weiss
2014-03-29 22:50 ` [PATCH 1/2] commit: add --ignore-submodules[=<when>] parameter Ronald Weiss
2014-03-29 23:14 ` Jens Lehmann
2014-03-30 19:48 ` Jens Lehmann
2014-03-30 23:43 ` [PATCH v2] " Ronald Weiss
2014-03-31 0:07 ` [PATCH v2.1] " Ronald Weiss
2014-03-31 18:58 ` Jens Lehmann
2014-03-31 20:37 ` Jens Lehmann
2014-03-31 21:50 ` Ronald Weiss
2014-03-31 21:47 ` Ronald Weiss
2014-03-31 22:50 ` Ronald Weiss
2014-03-31 23:35 ` Ronald Weiss [this message]
2014-04-01 20:23 ` Jens Lehmann
2014-04-01 21:59 ` Ronald Weiss
2014-04-02 18:53 ` Jens Lehmann
2014-04-02 19:56 ` Ronald Weiss
2014-04-06 16:28 ` Jens Lehmann
2014-04-07 21:46 ` Ronald Weiss
2014-04-07 23:01 ` [PATCH v3 1/2] add: " Ronald Weiss
2014-04-07 23:03 ` [PATCH v3 2/2] commit: " Ronald Weiss
2014-04-08 18:43 ` Jens Lehmann
2014-04-08 20:19 ` Ronald Weiss
2014-04-12 22:20 ` Ronald Weiss
2014-04-12 22:45 ` [PATCH v4 1/2] add: " Ronald Weiss
2014-04-18 11:53 ` Jens Lehmann
2014-04-21 21:19 ` Ronald Weiss
2014-04-12 22:49 ` [PATCH v4 2/2] commit: " Ronald Weiss
2014-04-18 12:09 ` Jens Lehmann
2014-04-21 22:08 ` Ronald Weiss
2014-04-22 19:14 ` Jens Lehmann
2014-04-22 21:12 ` [PATCH v5 1/2] add: " Ronald Weiss
2014-04-23 20:25 ` Eric Sunshine
2014-04-24 19:34 ` [PATCH v6 " Ronald Weiss
2014-04-24 19:42 ` [PATCH v6 2/2] commit: " Ronald Weiss
2014-04-22 21:13 ` [PATCH v5 " Ronald Weiss
2014-04-14 18:30 ` [PATCH v3 " Junio C Hamano
2014-04-14 20:18 ` Ronald Weiss
2014-04-14 21:08 ` Junio C Hamano
2014-04-08 18:26 ` [PATCH v2.1] " Jens Lehmann
2014-04-12 23:41 ` Ronald Weiss
2014-04-18 12:28 ` Jens Lehmann
2014-04-22 22:21 ` Ronald Weiss
2014-03-31 17:14 ` [PATCH 1/2] " Junio C Hamano
2014-03-29 22:56 ` [PATCH 2/2] status: don't ignore submodules added to index Ronald Weiss
2014-03-29 23:16 ` Jens Lehmann
2014-03-29 23:40 ` Ronald Weiss
2014-03-30 0:01 ` Ronald Weiss
2014-03-30 10:14 ` [WIP/PATCH] status/commit: always show staged submodules regardless of ignore config 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=5339FBB4.1010101@gmail.com \
--to=weiss.ronald@gmail.com \
--cc=Jens.Lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvoigt@hvoigt.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).