From: Jens Lehmann <Jens.Lehmann@web.de>
To: Ronald Weiss <weiss.ronald@gmail.com>, git@vger.kernel.org
Cc: Heiko Voigt <hvoigt@hvoigt.net>, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v3 2/2] commit: add --ignore-submodules[=<when>] parameter
Date: Tue, 08 Apr 2014 20:43:52 +0200 [thread overview]
Message-ID: <53444368.9050607@web.de> (raw)
In-Reply-To: <53432EA5.5060102@gmail.com>
Am 08.04.2014 01:03, schrieb Ronald Weiss:
> Git commit honors the 'ignore' setting from .gitmodules or .git/config,
> but didn't allow to override it from command line, like other commands do.
>
> Useful <when> values for commit are 'all' (default) or 'none'. The others
> ('dirty' and 'untracked') have same effect as 'none', as commit is only
> interested in whether the submodule's HEAD differs from what is commited
> in the superproject.
Unless it outputs a status message, then 'dirty' and 'untracked' do
influence what is shown there. Apart from that (and maybe tests for
these two cases ;-) this is looking good to me.
> This patch depends on Jens Lehmann's patch "commit -m: commit staged
> submodules regardless of ignore config". Without it,
> "commit -m --ignore-submodules" would not work and tests introduced
> here would fail.
>
> Signed-off-by: Ronald Weiss <weiss.ronald@gmail.com>
> ---
> Documentation/git-commit.txt | 6 ++++++
> builtin/commit.c | 8 ++++++-
> t/t7513-commit-ignore-submodules.sh | 42 +++++++++++++++++++++++++++++++++++++
> 3 files changed, 55 insertions(+), 1 deletion(-)
> create mode 100644 t/t7513-commit-ignore-submodules.sh
>
> diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
> index 1a7616c..8d3b2db 100644
> --- a/Documentation/git-commit.txt
> +++ b/Documentation/git-commit.txt
> @@ -13,6 +13,7 @@ SYNOPSIS
> [-F <file> | -m <msg>] [--reset-author] [--allow-empty]
> [--allow-empty-message] [--no-verify] [-e] [--author=<author>]
> [--date=<date>] [--cleanup=<mode>] [--[no-]status]
> + [--ignore-submodules[=<when>]]
> [-i | -o] [-S[<keyid>]] [--] [<file>...]
>
> DESCRIPTION
> @@ -271,6 +272,11 @@ The possible options are:
> The default can be changed using the status.showUntrackedFiles
> configuration variable documented in linkgit:git-config[1].
>
> +--ignore-submodules[=<when>]::
> + Can be used to override any settings of the 'submodule.*.ignore'
> + option in linkgit:git-config[1] or linkgit:gitmodules[5].
> + <when> can be either "none" or "all", which is the default.
> +
> -v::
> --verbose::
> Show unified diff between the HEAD commit and what
> diff --git a/builtin/commit.c b/builtin/commit.c
> index 0db215b..121c185 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -360,7 +360,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix,
> */
> if (all || (also && pathspec.nr)) {
> fd = hold_locked_index(&index_lock, 1);
> - add_files_to_cache(also ? prefix : NULL, &pathspec, 0, NULL);
> + add_files_to_cache(also ? prefix : NULL, &pathspec, 0, ignore_submodule_arg);
> refresh_cache_or_die(refresh_flags);
> update_main_cache_tree(WRITE_TREE_SILENT);
> if (write_cache(fd, active_cache, active_nr) ||
> @@ -1492,6 +1492,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
> OPT_BOOL(0, "amend", &amend, N_("amend previous commit")),
> OPT_BOOL(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")),
> { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, N_("mode"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"), PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
> + { 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" },
> /* end commit contents options */
>
> OPT_HIDDEN_BOOL(0, "allow-empty", &allow_empty,
> @@ -1531,6 +1534,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
> argc = parse_and_validate_options(argc, argv, builtin_commit_options,
> builtin_commit_usage,
> prefix, current_head, &s);
> +
> + s.ignore_submodule_arg = ignore_submodule_arg;
> +
> if (dry_run)
> return dry_run_commit(argc, argv, prefix, current_head, &s);
> index_file = prepare_index(argc, argv, prefix, current_head, 0);
> diff --git a/t/t7513-commit-ignore-submodules.sh b/t/t7513-commit-ignore-submodules.sh
> new file mode 100644
> index 0000000..83ce04c
> --- /dev/null
> +++ b/t/t7513-commit-ignore-submodules.sh
> @@ -0,0 +1,42 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2014 Ronald Weiss
> +#
> +
> +test_description='Test of git commit --ignore-submodules'
> +
> +. ./test-lib.sh
> +
> +test_expect_success 'create submodule' '
> + test_create_repo sm && (
> + cd sm &&
> + >foo &&
> + git add foo &&
> + git commit -m "Add foo"
> + ) &&
> + git submodule add ./sm &&
> + git commit -m "Add sm"
> +'
> +
> +update_sm () {
> + (cd sm &&
> + echo bar >> foo &&
> + git add foo &&
> + git commit -m "Updated foo"
> + )
> +}
> +
> +test_expect_success 'commit -a --ignore-submodules=all ignores dirty submodule' '
> + update_sm &&
> + test_must_fail git commit -a --ignore-submodules=all -m "Update sm"
> +'
> +
> +test_expect_success 'commit -a --ignore-submodules=none overrides ignore=all setting' '
> + update_sm &&
> + git config submodule.sm.ignore all &&
> + git commit -a --ignore-submodules=none -m "Update sm" &&
> + git diff --exit-code --ignore-submodules=none &&
> + git diff --cached --exit-code --ignore-submodules=none
> +'
> +
> +test_done
>
next prev parent reply other threads:[~2014-04-08 18:44 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
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 [this message]
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=53444368.9050607@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvoigt@hvoigt.net \
--cc=weiss.ronald@gmail.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).