From: Junio C Hamano <gitster@pobox.com>
To: Sergey Organov <sorganov@gmail.com>
Cc: "Jeff King" <peff@peff.net>,
"Philip Oakley" <philipoakley@iee.email>,
"Elijah Newren" <newren@gmail.com>,
"Felipe Contreras" <felipe.contreras@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Alex Henrie" <alexhenrie24@gmail.com>,
git@vger.kernel.org
Subject: Re: [PATCH 2/6] diff-merges: move specific diff-index "-m" handling to diff-index
Date: Tue, 11 May 2021 13:09:33 +0900 [thread overview]
Message-ID: <xmqqwns5oqrm.fsf@gitster.g> (raw)
In-Reply-To: <20210510153451.15090-3-sorganov@gmail.com> (Sergey Organov's message of "Mon, 10 May 2021 18:34:47 +0300")
Sergey Organov <sorganov@gmail.com> writes:
> int cmd_diff_index(int argc, const char **argv, const char *prefix)
> {
> struct rev_info rev;
> unsigned int option = 0;
> - int i;
> int result;
>
> if (argc == 2 && !strcmp(argv[1], "-h"))
> @@ -27,17 +53,16 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
> rev.abbrev = 0;
> prefix = precompose_argv_prefix(argc, argv, prefix);
>
> + /*
> + * It's essential to parse our distinct options before calling
> + * setup_revisions(), for the latter not to see "-m".
> + */
> + argc = parse_distinct_options(argc, argv, &rev, &option);
> argc = setup_revisions(argc, argv, &rev, NULL);
This change is risky, as the loop below (which this patch moves to
parse_distinct_options()) has no knowledge of other options that
setup_revisions() helper is prepared to handle and that takes an
argument. When parsing "git cmd --opt --cached A", setup_revisions()
may know that --opt takes an argument and eat both (i.e. the
"--cached" is not an option but an arg given to "--opt"), but the
new parse_distinct_options() helper does not; it will happily skip
"--opt" and leave it in, mistake "--cached" as an option and remove,
and instead make "A" the arg given to "--opt".
Picking up the remnant _after_ setup_revisions() ate what it
understands would not have such a downside, as long as none of our
"distinct options" take any argument.
Can't we make "-m means something special for diff-index" without
butchering the command line processing in this step? diff-index
does not care about --diff-merges, so letting setup_revisions()
remember only the fact that "-m" was given while parsing, and then
postprocess what "-m" means depending on the command (i.e. everybody
else would treat it as a short-hand for "--diff-merges=m" plus "we
need some form of diff output, while allowing "diff-index" to treat
it differently) should not be rocket science.
Thanks.
next prev parent reply other threads:[~2021-05-11 4:09 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-29 1:44 Why doesn't `git log -m` imply `-p`? Alex Henrie
2021-04-29 3:22 ` Junio C Hamano
2021-04-29 12:38 ` Sergey Organov
2021-04-29 15:25 ` Alex Henrie
2021-04-29 16:35 ` Sergey Organov
2021-04-29 17:24 ` Alex Henrie
2021-04-29 19:07 ` Sergey Organov
2021-05-04 20:09 ` Felipe Contreras
2021-05-04 20:34 ` Sergey Organov
2021-04-29 23:27 ` Junio C Hamano
2021-04-30 4:50 ` Junio C Hamano
2021-04-30 14:00 ` Sergey Organov
2021-05-01 0:41 ` Junio C Hamano
2021-05-03 17:42 ` Sergey Organov
2021-05-04 1:15 ` Junio C Hamano
2021-05-04 9:10 ` Sergey Organov
2021-05-04 12:38 ` Junio C Hamano
2021-05-04 14:18 ` Sergey Organov
2021-05-05 0:20 ` Junio C Hamano
2021-05-05 13:43 ` Sergey Organov
2021-05-06 0:27 ` Junio C Hamano
2021-05-06 12:59 ` Sergey Organov
2021-05-06 20:29 ` Junio C Hamano
2021-05-06 20:48 ` Sergey Organov
2021-05-07 1:31 ` Alex Henrie
2021-05-10 12:11 ` Sergey Organov
2021-05-10 16:56 ` Alex Henrie
2021-05-10 15:34 ` [PATCH 0/6] diff-merges: let -m imply -p Sergey Organov
2021-05-10 15:34 ` [PATCH 1/6] t4013: add test for "git diff-index -m" Sergey Organov
2021-05-10 15:34 ` [PATCH 2/6] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-11 4:09 ` Junio C Hamano [this message]
2021-05-11 5:23 ` Junio C Hamano
2021-05-11 5:41 ` Junio C Hamano
2021-05-11 13:43 ` Sergey Organov
2021-05-10 15:34 ` [PATCH 3/6] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-10 15:34 ` [PATCH 4/6] stash list: stop passing "-m" to "git list" Sergey Organov
2021-05-10 15:34 ` [PATCH 5/6] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-10 15:34 ` [PATCH 6/6] diff-merges: let -m imply -p Sergey Organov
2021-05-11 4:14 ` Junio C Hamano
2021-05-11 4:56 ` Junio C Hamano
2021-05-11 14:03 ` Sergey Organov
2021-05-11 17:13 ` Alex Henrie
2021-05-11 18:46 ` Sergey Organov
2021-05-11 19:53 ` Alex Henrie
2021-05-11 20:27 ` Sergey Organov
2021-05-12 1:16 ` Felipe Contreras
2021-05-11 18:31 ` Elijah Newren
2021-05-11 19:00 ` Sergey Organov
2021-05-11 19:56 ` Elijah Newren
2021-05-11 20:32 ` Sergey Organov
2021-05-11 20:43 ` Junio C Hamano
2021-05-11 21:38 ` Sergey Organov
2021-05-11 23:40 ` Junio C Hamano
2021-05-19 21:44 ` Jonathan Nieder
2021-05-20 20:39 ` Sergey Organov
2021-05-21 18:14 ` Felipe Contreras
2021-05-11 16:29 ` Sergey Organov
2021-05-17 12:57 ` Sergey Organov
2021-05-11 16:30 ` Sergey Organov
2021-05-19 21:48 ` Jonathan Nieder
2021-05-19 22:03 ` Sergey Organov
2021-05-19 23:32 ` Junio C Hamano
2021-05-20 13:14 ` Sergey Organov
2021-05-20 18:50 ` Jonathan Nieder
2021-05-20 19:38 ` Sergey Organov
2021-05-17 15:58 ` [PATCH v1 0/9] " Sergey Organov
2021-05-17 15:58 ` [PATCH v1 1/9] t4013: test that "-m" alone has no effect in "git log" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 2/9] t4013: test "git -m --raw" Sergey Organov
2021-05-18 3:27 ` Bagas Sanjaya
2021-05-18 12:13 ` Sergey Organov
2021-05-17 15:58 ` [PATCH v1 3/9] t4013: test "git -m --stat" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 4/9] t4013: test "git diff-index -m" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 5/9] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-17 20:10 ` Junio C Hamano
2021-05-17 20:24 ` Sergey Organov
2021-05-17 20:29 ` Junio C Hamano
2021-05-17 21:00 ` Sergey Organov
2021-05-17 15:58 ` [PATCH v1 6/9] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 7/9] stash list: stop passing "-m" to "git list" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 8/9] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 9/9] diff-merges: let "-m" imply "-p" Sergey Organov
2021-05-17 19:51 ` [PATCH v1 0/9] diff-merges: let -m imply -p Junio C Hamano
2021-05-17 20:11 ` Sergey Organov
2021-05-18 3:18 ` Bagas Sanjaya
2021-05-18 12:03 ` Sergey Organov
2021-05-18 12:17 ` Sergey Organov
2021-05-18 14:17 ` Junio C Hamano
2021-05-18 15:52 ` Sergey Organov
2021-05-19 11:45 ` [PATCH v2 " Sergey Organov
2021-05-19 11:45 ` [PATCH v2 1/9] t4013: test that "-m" alone has no effect in "git log" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 2/9] t4013: test "git log -m --raw" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 3/9] t4013: test "git log -m --stat" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 4/9] t4013: test "git diff-index -m" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 5/9] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-19 11:45 ` [PATCH v2 6/9] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 7/9] stash list: stop passing "-m" to "git log" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 8/9] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 9/9] diff-merges: let "-m" imply "-p" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 00/10] diff-merges: let -m imply -p Sergey Organov
2021-05-20 21:46 ` [PATCH v3 01/10] t4013: test that "-m" alone has no effect in "git log" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 02/10] t4013: test "git log -m --raw" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 03/10] t4013: test "git log -m --stat" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 04/10] t4013: test "git diff-tree -m" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 05/10] t4013: test "git diff-index -m" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 06/10] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-20 21:47 ` [PATCH v3 07/10] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-20 21:47 ` [PATCH v3 08/10] stash list: stop passing "-m" to "git log" Sergey Organov
2021-05-20 21:47 ` [PATCH v3 09/10] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-20 21:47 ` [PATCH v3 10/10] diff-merges: let "-m" imply "-p" Sergey Organov
2021-08-05 3:16 ` Jonathan Nieder
2021-08-06 1:45 ` [PATCH] Revert 'diff-merges: let "-m" imply "-p"' Jonathan Nieder
2021-08-06 17:21 ` Junio C Hamano
2021-08-06 17:55 ` Junio C Hamano
2021-08-06 19:57 ` Jonathan Nieder
2021-08-08 17:55 ` Junio C Hamano
2021-08-17 9:13 ` Sergey Organov
2021-08-17 22:10 ` Junio C Hamano
2021-08-18 8:56 ` Sergey Organov
2021-08-19 18:50 ` Junio C Hamano
2021-08-19 18:51 ` Junio C Hamano
2021-08-20 10:24 ` Sergey Organov
2021-08-07 1:55 ` Jonathan Nieder
2021-08-07 6:49 ` Johannes Sixt
2021-08-07 13:51 ` Jonathan Nieder
2021-08-07 17:00 ` Junio C Hamano
2021-08-07 18:08 ` Jonathan Nieder
2021-08-08 0:42 ` Junio C Hamano
2021-08-17 9:17 ` Sergey Organov
2021-08-16 9:09 ` [PATCH v3 10/10] diff-merges: let "-m" imply "-p" Sergey Organov
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqwns5oqrm.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=alexhenrie24@gmail.com \
--cc=avarab@gmail.com \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=newren@gmail.com \
--cc=peff@peff.net \
--cc=philipoakley@iee.email \
--cc=sorganov@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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).