* Bug in "git show"? @ 2013-07-15 11:25 Stefan Beller 2013-07-15 12:12 ` Matthieu Moy 0 siblings, 1 reply; 43+ messages in thread From: Stefan Beller @ 2013-07-15 11:25 UTC (permalink / raw) To: git -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, so I wanted to write a script using some git commands, but the output of the git commands is not as expected. I am using git --version git version 1.8.3.2.804.g0da7a53 (current origin/master at git://github.com/gitster/git.git) The command I am trying to use is git --no-pager show --format="%ad" <commit> Expected output: sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^ Fri Jul 12 12:04:19 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^ Fri Jul 12 12:04:17 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^ Fri Jul 12 12:04:16 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^^ Fri Jul 12 12:04:14 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^^^ Fri Jul 12 12:04:12 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^^^^ Fri Jul 12 12:04:10 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^^^^^ Fri Jul 12 12:04:09 2013 -0700 sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^^^^^^ Fri Jul 12 12:04:07 2013 -0700 However I sometimes also get: sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53 Fri Jul 12 10:49:34 2013 -0700 diff --git a/Documentation/RelNotes/1.8.4.txt b/Documentation/RelNotes/1.8.4.txt index 0e50df8..4250e5a 100644 - --- a/Documentation/RelNotes/1.8.4.txt +++ b/Documentation/RelNotes/1.8.4.txt @@ -79,6 +79,13 @@ Foreign interfaces, subsystems and ports. UI, Workflows & Features + * "gitweb" learned to optionally place extra links that point at the + levels higher than the Gitweb pages themselves in the breadcrumbs, + so that it can be used as part of a larger installation. + + * "git log --format=" now honors i18n.logoutputencoding configuration + variable. + * The "push.default=simple" mode of "git push" has been updated to behave like "current" without requiring a remote tracking information, when you push to a remote that is different from where sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53^^^^^^^^ Fri Jul 12 12:04:07 2013 -0700 diff --cc t/t5505-remote.sh index ee5d65d,8d0f3e3..8f6e392 - --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@@ -61,25 -62,25 +61,25 @@@ test_expect_success C_LOCALE_OUTPUT 're ' test_expect_success 'add another remote' ' -( - cd test && - git remote add -f second ../two && - tokens_match "origin second" "$(git remote)" && - check_tracking_branch second master side another && - git for-each-ref "--format=%(refname)" refs/remotes | - sed -e "/^refs\/remotes\/origin\//d" \ - -e "/^refs\/remotes\/second\//d" >actual && - >expect && So at some commits, also the diff is shown, which should not happen if you're using --format="%ad" to my understanding. So far it seems to be deterministic here. (Each commit either always behaves correctly or incorrectly). Initially I suspected it being different for merges or no-merges, but I gut the unexpected behavior for both merge and non-merge commits. Can somebody confirm this behavior or has any idea, whether I am doing something wrong here? Thanks, Stefan -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) Comment: Using GnuPG with undefined - http://www.enigmail.net/ iQIcBAEBAgAGBQJR49xHAAoJEJQCPTzLflhqiFcP/0S5M71urjn1Fh5Cz2950wBl cs6+r9wKF5366wv3Ombfh0KrOPQCE7Yv1GWk2r2L008BWrz0wgnsl1xnMnAT00dH 1WzmupWExxwXHAueDisq2qL4dubFrnVxKWvpwxBd3JBbsWNXeTGl5o6dl69zaXdx JHzIHvw1/vrxoCLaflitjcQezuFITOVVoNsYawK12gznjxujONm0sej5TBFUw784 K5KTJNJqxzUf9+Z+88hg2oif7kJlugTIqtH5sRMVwXrkpc12f+HcwROg0srE5ITc 8WpK0s7xgZokUCohMhUXlLAOYJwAZju+K1LExkrQ9T32oP4iAKsJpqcRLAAX6Ig7 OeaWUQ2WX2CfYDExjuV6h+FXAU0qT87iv3PgeZWAnmgDQPUwFboIxuF1Nrpq/FOY Ioe2YOsFOdhmuDjCHEfu0aVNOeejHS8LEkC1IUI/+PzDlEJC/b17SwEdrD4aVCPj RZhz2zI8ZxYHP9ITvMDs1VQRP6jMSAwEtAWg7ac7ypETToOIAxRp2j9Rrjayt8A5 /TZ++wMh7G4Tm/D9+iutQnqzE8E8eiT6i7LgAcDSA3g6oq7/hUzupKU2lc+znO2J wxiwdqYBHWtw1Jc8eaZAJC/NMfxbRzOSCx4lJbO+tpXP0pR/OPIg2f2wUXcAh3zH JC9GdEUVIwN34j2ueoZ8 =G6Oc -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Bug in "git show"? 2013-07-15 11:25 Bug in "git show"? Stefan Beller @ 2013-07-15 12:12 ` Matthieu Moy 2013-07-15 12:23 ` Stefan Beller 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy 0 siblings, 2 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 12:12 UTC (permalink / raw) To: Stefan Beller; +Cc: git Stefan Beller <stefanbeller@googlemail.com> writes: > However I sometimes also get: > sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53 > Fri Jul 12 10:49:34 2013 -0700 > > diff --git a/Documentation/RelNotes/1.8.4.txt > b/Documentation/RelNotes/1.8.4.txt > index 0e50df8..4250e5a 100644 > --- a/Documentation/RelNotes/1.8.4.txt > +++ b/Documentation/RelNotes/1.8.4.txt "git show" will show the diff by default. For merge commits, it shows the --cc diff which is often empty, hence the behavior you see. You want to use "git show -s", which suppresses the patch output. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Bug in "git show"? 2013-07-15 12:12 ` Matthieu Moy @ 2013-07-15 12:23 ` Stefan Beller 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy 1 sibling, 0 replies; 43+ messages in thread From: Stefan Beller @ 2013-07-15 12:23 UTC (permalink / raw) To: Matthieu Moy; +Cc: git [-- Attachment #1: Type: text/plain, Size: 719 bytes --] On 07/15/2013 02:12 PM, Matthieu Moy wrote: > Stefan Beller <stefanbeller@googlemail.com> writes: > >> However I sometimes also get: >> sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53 >> Fri Jul 12 10:49:34 2013 -0700 >> >> diff --git a/Documentation/RelNotes/1.8.4.txt >> b/Documentation/RelNotes/1.8.4.txt >> index 0e50df8..4250e5a 100644 >> --- a/Documentation/RelNotes/1.8.4.txt >> +++ b/Documentation/RelNotes/1.8.4.txt > > "git show" will show the diff by default. For merge commits, it shows > the --cc diff which is often empty, hence the behavior you see. > > You want to use "git show -s", which suppresses the patch output. > Thanks, that's exactly what I am looking for. Stefan [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 899 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH 0/5] Make "git show -s" easier to discover for users 2013-07-15 12:12 ` Matthieu Moy 2013-07-15 12:23 ` Stefan Beller @ 2013-07-15 13:07 ` Matthieu Moy 2013-07-15 13:07 ` [PATCH 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy ` (4 more replies) 1 sibling, 5 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 13:07 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy > Stefan Beller <stefanbeller@googlemail.com> writes: > >> However I sometimes also get: >> sb@sb:~/OSS/git$ git show --format="%ad" 0da7a53 >> Fri Jul 12 10:49:34 2013 -0700 >> >> diff --git a/Documentation/RelNotes/1.8.4.txt >> b/Documentation/RelNotes/1.8.4.txt >> index 0e50df8..4250e5a 100644 >> --- a/Documentation/RelNotes/1.8.4.txt >> +++ b/Documentation/RelNotes/1.8.4.txt > > "git show" will show the diff by default. For merge commits, it shows > the --cc diff which is often empty, hence the behavior you see. > > You want to use "git show -s", which suppresses the patch output. ... and this "git show -s" is extraordinarily hard to discover, as it is only documented in "git log --help". Google has been my friend here, but we should really improve that. This patch series does essentially two things: * Add a --no-patch synonym for -s. I'm actually wondering why the option wasn't called this way from the beginning. * Reorganize the doc so that "git show" actually mentions it. While we're there, there's a reformatting patch, and one to make "git log --no-patch --patch" actually show the patch. (60aa9cf8f3, Documentation: document show -s, Tue Nov 9 11:12:48 2010 actually acknowledged that the documentation wasn't complete and that something else was needed, this should be it) Matthieu Moy (5): diff: allow --no-patch as synonym for -s diff: allow --patch to override -s/--no-patch Documentation/git-show.txt: include common diff options, like git-log.txt Documentation: move description of -s, --no-patch to diff-options.txt Documentation/git-log.txt: capitalize section names Documentation/diff-options.txt | 5 +++++ Documentation/git-log.txt | 8 ++++---- Documentation/git-show.txt | 9 +++++++++ Documentation/rev-list-options.txt | 3 --- diff.c | 7 ++++--- 5 files changed, 22 insertions(+), 10 deletions(-) -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH 1/5] diff: allow --no-patch as synonym for -s 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy @ 2013-07-15 13:07 ` Matthieu Moy 2013-07-15 13:07 ` [PATCH 2/5] diff: allow --patch to override -s/--no-patch Matthieu Moy ` (3 subsequent siblings) 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 13:07 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy This follows the usual convention of having a --no-foo option to negate --foo. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/rev-list-options.txt | 1 + diff.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index e157ec3..c128a85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -851,5 +851,6 @@ options may be given. See linkgit:git-diff-files[1] for more options. Show the tree objects in the diff output. This implies '-r'. -s:: +--no-patch:: Suppress diff output. endif::git-rev-list[] diff --git a/diff.c b/diff.c index 6578690..6bd821d 100644 --- a/diff.c +++ b/diff.c @@ -3551,7 +3551,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; - else if (!strcmp(arg, "-s")) + else if (!strcmp(arg, "-s") || !strcmp(arg, "--no-patch")) options->output_format |= DIFF_FORMAT_NO_OUTPUT; else if (!prefixcmp(arg, "--stat")) /* --stat, --stat-width, --stat-name-width, or --stat-count */ -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH 2/5] diff: allow --patch to override -s/--no-patch 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 13:07 ` [PATCH 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy @ 2013-07-15 13:07 ` Matthieu Moy 2013-07-15 15:02 ` Junio C Hamano 2013-07-15 13:07 ` [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy ` (2 subsequent siblings) 4 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 13:07 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- diff.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/diff.c b/diff.c index 6bd821d..66a6877 100644 --- a/diff.c +++ b/diff.c @@ -3515,9 +3515,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) int argcount; /* Output format options */ - if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) + if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) { + options->output_format &= ~DIFF_FORMAT_NO_OUTPUT; options->output_format |= DIFF_FORMAT_PATCH; - else if (opt_arg(arg, 'U', "unified", &options->context)) + } else if (opt_arg(arg, 'U', "unified", &options->context)) options->output_format |= DIFF_FORMAT_PATCH; else if (!strcmp(arg, "--raw")) options->output_format |= DIFF_FORMAT_RAW; -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH 2/5] diff: allow --patch to override -s/--no-patch 2013-07-15 13:07 ` [PATCH 2/5] diff: allow --patch to override -s/--no-patch Matthieu Moy @ 2013-07-15 15:02 ` Junio C Hamano 2013-07-15 15:28 ` Matthieu Moy 0 siblings, 1 reply; 43+ messages in thread From: Junio C Hamano @ 2013-07-15 15:02 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, stefanbeller Matthieu Moy <Matthieu.Moy@imag.fr> writes: > Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> > --- > diff.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/diff.c b/diff.c > index 6bd821d..66a6877 100644 > --- a/diff.c > +++ b/diff.c > @@ -3515,9 +3515,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) > int argcount; > > /* Output format options */ > - if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) > + if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) { > + options->output_format &= ~DIFF_FORMAT_NO_OUTPUT; > options->output_format |= DIFF_FORMAT_PATCH; > - else if (opt_arg(arg, 'U', "unified", &options->context)) > + } else if (opt_arg(arg, 'U', "unified", &options->context)) > options->output_format |= DIFF_FORMAT_PATCH; > else if (!strcmp(arg, "--raw")) > options->output_format |= DIFF_FORMAT_RAW; I am wondering if the difference after this patch between "-p" and "-U8" is deliberate, or just an accident coming from the way the original was written in ee1e5412 (git diff: support "-U" and "--unified" options properly, 2006-05-13). If the original were written in this way: if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch") || opt_arg(arg, 'U', "unified", &options->context)) options->output_format |= DIFF_FORMAT_PATCH; I suspect you would have given the additional options->output_format &= ~DIFF_FORMAT_NO_OUTPUT; to the whole thing, without singling out "-U8". Or am I missing some good reason why "--no-patch -U8" should not produce a patch, while "--no-patch -p" and "-U8" should both should? ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH 2/5] diff: allow --patch to override -s/--no-patch 2013-07-15 15:02 ` Junio C Hamano @ 2013-07-15 15:28 ` Matthieu Moy 2013-07-15 16:40 ` Junio C Hamano 0 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 15:28 UTC (permalink / raw) To: Junio C Hamano; +Cc: git, stefanbeller Junio C Hamano <gitster@pobox.com> writes: > I am wondering if the difference after this patch between "-p" and > "-U8" is deliberate, or just an accident coming from the way the > original was written in ee1e5412 (git diff: support "-U" and > "--unified" options properly, 2006-05-13). No, it isn't. I just didn't notice the -U case. > If the original were written in this way: > > if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch") || > opt_arg(arg, 'U', "unified", &options->context)) > options->output_format |= DIFF_FORMAT_PATCH; Yes, this seems to be a better way. There are other cases like --patch-with-raw, I'll send a reroll. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH 2/5] diff: allow --patch to override -s/--no-patch 2013-07-15 15:28 ` Matthieu Moy @ 2013-07-15 16:40 ` Junio C Hamano 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy 0 siblings, 1 reply; 43+ messages in thread From: Junio C Hamano @ 2013-07-15 16:40 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, stefanbeller Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes: > Junio C Hamano <gitster@pobox.com> writes: > >> I am wondering if the difference after this patch between "-p" and >> "-U8" is deliberate, or just an accident coming from the way the >> original was written in ee1e5412 (git diff: support "-U" and >> "--unified" options properly, 2006-05-13). > > No, it isn't. I just didn't notice the -U case. > >> If the original were written in this way: >> >> if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch") || >> opt_arg(arg, 'U', "unified", &options->context)) >> options->output_format |= DIFF_FORMAT_PATCH; > > Yes, this seems to be a better way. > > There are other cases like --patch-with-raw, I'll send a reroll. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v2 0/5] Make "git show -s" easier to discover for users 2013-07-15 16:40 ` Junio C Hamano @ 2013-07-15 17:05 ` Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy ` (4 more replies) 0 siblings, 5 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:05 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy This fixes the issue found by Junio where "git log --no-patch -u" was showing the patch, but not "git log --no-patch -U8". Other patches are unmodified. Matthieu Moy (5): diff: allow --no-patch as synonym for -s diff: allow --patch & cie to override -s/--no-patch Documentation/git-show.txt: include common diff options, like git-log.txt Documentation: move description of -s, --no-patch to diff-options.txt Documentation/git-log.txt: capitalize section names Documentation/diff-options.txt | 5 +++++ Documentation/git-log.txt | 8 ++++---- Documentation/git-show.txt | 9 +++++++++ Documentation/rev-list-options.txt | 3 --- diff.c | 30 ++++++++++++++++++------------ 5 files changed, 36 insertions(+), 19 deletions(-) -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v2 1/5] diff: allow --no-patch as synonym for -s 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy @ 2013-07-15 17:05 ` Matthieu Moy 2013-07-15 17:35 ` Jonathan Nieder 2013-07-15 17:05 ` [PATCH v2 2/5] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy ` (3 subsequent siblings) 4 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:05 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy This follows the usual convention of having a --no-foo option to negate --foo. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/rev-list-options.txt | 1 + diff.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index e157ec3..c128a85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -851,5 +851,6 @@ options may be given. See linkgit:git-diff-files[1] for more options. Show the tree objects in the diff output. This implies '-r'. -s:: +--no-patch:: Suppress diff output. endif::git-rev-list[] diff --git a/diff.c b/diff.c index 6578690..6bd821d 100644 --- a/diff.c +++ b/diff.c @@ -3551,7 +3551,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; - else if (!strcmp(arg, "-s")) + else if (!strcmp(arg, "-s") || !strcmp(arg, "--no-patch")) options->output_format |= DIFF_FORMAT_NO_OUTPUT; else if (!prefixcmp(arg, "--stat")) /* --stat, --stat-width, --stat-name-width, or --stat-count */ -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH v2 1/5] diff: allow --no-patch as synonym for -s 2013-07-15 17:05 ` [PATCH v2 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy @ 2013-07-15 17:35 ` Jonathan Nieder 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy 0 siblings, 1 reply; 43+ messages in thread From: Jonathan Nieder @ 2013-07-15 17:35 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, gitster, stefanbeller Matthieu Moy wrote: > --- a/diff.c > +++ b/diff.c > @@ -3551,7 +3551,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) > options->output_format |= DIFF_FORMAT_NAME; > else if (!strcmp(arg, "--name-status")) > options->output_format |= DIFF_FORMAT_NAME_STATUS; > - else if (!strcmp(arg, "-s")) > + else if (!strcmp(arg, "-s") || !strcmp(arg, "--no-patch")) > options->output_format |= DIFF_FORMAT_NO_OUTPUT; Very nice idea. Tests? E.g.: diff --git i/t/t4000-diff-format.sh w/t/t4000-diff-format.sh index 6ddd469..0fa7380 100755 --- i/t/t4000-diff-format.sh +++ w/t/t4000-diff-format.sh @@ -59,4 +59,18 @@ test_expect_success \ 'validate git diff-files -p output.' \ 'compare_diff_patch current expected' +test_expect_success \ + 'git diff-files -s after editing work tree' \ + '>empty && + git diff-files -s >diff-s-output 2>err && + test_cmp empty diff-s-output && + test_cmp empty err' + +test_expect_success \ + 'git diff-files --no-patch as synonym for -s' \ + '>empty && + git diff-files --no-patch >diff-np-output 2>err && + test_cmp empty diff-np-output && + test_cmp empty err' + test_done ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v3 0/6] Make "git show -s" easier to discover for users 2013-07-15 17:35 ` Jonathan Nieder @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 1/6] t4000-diff-format.sh: modernize style Matthieu Moy ` (5 more replies) 0 siblings, 6 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Compared to v2, I just added tests. Strongly inspired from Jonathan's, but there's one more, and I chose the "modern" indentation style (hence a clean-up patch before, to avoid mixed-style in the same file). Matthieu Moy (6): t4000-diff-format.sh: modernize style diff: allow --no-patch as synonym for -s diff: allow --patch & cie to override -s/--no-patch Documentation/git-show.txt: include common diff options, like git-log.txt Documentation: move description of -s, --no-patch to diff-options.txt Documentation/git-log.txt: capitalize section names Documentation/diff-options.txt | 5 +++++ Documentation/git-log.txt | 8 ++++---- Documentation/git-show.txt | 9 +++++++++ Documentation/rev-list-options.txt | 3 --- diff.c | 30 ++++++++++++++++++------------ t/t4000-diff-format.sh | 35 ++++++++++++++++++++++++++--------- 6 files changed, 62 insertions(+), 28 deletions(-) -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v3 1/6] t4000-diff-format.sh: modernize style 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 18:00 ` Jonathan Nieder 2013-07-15 17:55 ` [PATCH v3 2/6] diff: allow --no-patch as synonym for -s Matthieu Moy ` (4 subsequent siblings) 5 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- t/t4000-diff-format.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index 6ddd469..2b5dffc 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -15,17 +15,17 @@ line 3' cat path0 >path1 chmod +x path1 -test_expect_success \ - 'update-index --add two files with and without +x.' \ - 'git update-index --add path0 path1' +test_expect_success 'update-index --add two files with and without +x.' ' + git update-index --add path0 path1 +' mv path0 path0- sed -e 's/line/Line/' <path0- >path0 chmod +x path0 rm -f path1 -test_expect_success \ - 'git diff-files -p after editing work tree.' \ - 'git diff-files -p >current' +test_expect_success 'git diff-files -p after editing work tree.' ' + git diff-files -p >actual +' # that's as far as it comes if [ "$(git config --get core.filemode)" = false ] @@ -55,8 +55,8 @@ deleted file mode 100755 -line 3 EOF -test_expect_success \ - 'validate git diff-files -p output.' \ - 'compare_diff_patch current expected' +test_expect_success 'validate git diff-files -p output.' ' + compare_diff_patch expected actual +' test_done -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH v3 1/6] t4000-diff-format.sh: modernize style 2013-07-15 17:55 ` [PATCH v3 1/6] t4000-diff-format.sh: modernize style Matthieu Moy @ 2013-07-15 18:00 ` Jonathan Nieder 0 siblings, 0 replies; 43+ messages in thread From: Jonathan Nieder @ 2013-07-15 18:00 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, gitster Matthieu Moy wrote: > Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> > --- > t/t4000-diff-format.sh | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) This test script can use more cleanup, but as preparation for later patches in this series the above is enough. :) If I forget to do more cleanup as a followup, feel free to kick me. Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v3 2/6] diff: allow --no-patch as synonym for -s 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 1/6] t4000-diff-format.sh: modernize style Matthieu Moy @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy ` (3 subsequent siblings) 5 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy This follows the usual convention of having a --no-foo option to negate --foo. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/rev-list-options.txt | 1 + diff.c | 2 +- t/t4000-diff-format.sh | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index e157ec3..c128a85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -851,5 +851,6 @@ options may be given. See linkgit:git-diff-files[1] for more options. Show the tree objects in the diff output. This implies '-r'. -s:: +--no-patch:: Suppress diff output. endif::git-rev-list[] diff --git a/diff.c b/diff.c index 6578690..6bd821d 100644 --- a/diff.c +++ b/diff.c @@ -3551,7 +3551,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; - else if (!strcmp(arg, "-s")) + else if (!strcmp(arg, "-s") || !strcmp(arg, "--no-patch")) options->output_format |= DIFF_FORMAT_NO_OUTPUT; else if (!prefixcmp(arg, "--stat")) /* --stat, --stat-width, --stat-name-width, or --stat-count */ diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index 2b5dffc..d702575 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -59,4 +59,16 @@ test_expect_success 'validate git diff-files -p output.' ' compare_diff_patch expected actual ' +test_expect_success 'git diff-files -s after editing work tree' ' + git diff-files -s >diff-s-output 2>err && + test_must_be_empty diff-s-output && + test_must_be_empty err +' + +test_expect_success 'git diff-files --no-patch as synonym for -s' ' + git diff-files --no-patch >diff-np-output 2>err && + test_must_be_empty diff-np-output && + test_must_be_empty err +' + test_done -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 1/6] t4000-diff-format.sh: modernize style Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 2/6] diff: allow --no-patch as synonym for -s Matthieu Moy @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 18:09 ` Jonathan Nieder 2013-07-15 17:55 ` [PATCH v3 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy ` (2 subsequent siblings) 5 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy All options that trigger a patch output now override --no-patch. The case of --binary is particular as the name may suggest that it turns a normal patch into a binary patch, but it actually already enables patch output when normally disabled (e.g. "git log --binary" displays a patch), hence it makes sense that "git show --no-patch --binary" display the binary patch. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- diff.c | 28 +++++++++++++++++----------- t/t4000-diff-format.sh | 5 +++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/diff.c b/diff.c index 6bd821d..66ab714 100644 --- a/diff.c +++ b/diff.c @@ -3508,6 +3508,11 @@ static int parse_submodule_opt(struct diff_options *options, const char *value) return 1; } +static void enable_patch_output(int *fmt) { + *fmt &= ~DIFF_FORMAT_NO_OUTPUT; + *fmt |= DIFF_FORMAT_PATCH; +} + int diff_opt_parse(struct diff_options *options, const char **av, int ac) { const char *arg = av[0]; @@ -3515,15 +3520,15 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) int argcount; /* Output format options */ - if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) - options->output_format |= DIFF_FORMAT_PATCH; - else if (opt_arg(arg, 'U', "unified", &options->context)) - options->output_format |= DIFF_FORMAT_PATCH; + if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch") + || opt_arg(arg, 'U', "unified", &options->context)) + enable_patch_output(&options->output_format); else if (!strcmp(arg, "--raw")) options->output_format |= DIFF_FORMAT_RAW; - else if (!strcmp(arg, "--patch-with-raw")) - options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_RAW; - else if (!strcmp(arg, "--numstat")) + else if (!strcmp(arg, "--patch-with-raw")) { + enable_patch_output(&options->output_format); + options->output_format |= DIFF_FORMAT_RAW; + } else if (!strcmp(arg, "--numstat")) options->output_format |= DIFF_FORMAT_NUMSTAT; else if (!strcmp(arg, "--shortstat")) options->output_format |= DIFF_FORMAT_SHORTSTAT; @@ -3545,9 +3550,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_CHECKDIFF; else if (!strcmp(arg, "--summary")) options->output_format |= DIFF_FORMAT_SUMMARY; - else if (!strcmp(arg, "--patch-with-stat")) - options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_DIFFSTAT; - else if (!strcmp(arg, "--name-only")) + else if (!strcmp(arg, "--patch-with-stat")) { + enable_patch_output(&options->output_format); + options->output_format |= DIFF_FORMAT_DIFFSTAT; + } else if (!strcmp(arg, "--name-only")) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; @@ -3624,7 +3630,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) /* flags options */ else if (!strcmp(arg, "--binary")) { - options->output_format |= DIFF_FORMAT_PATCH; + enable_patch_output(&options->output_format); DIFF_OPT_SET(options, BINARY); } else if (!strcmp(arg, "--full-index")) diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index d702575..4fce12f 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -71,4 +71,9 @@ test_expect_success 'git diff-files --no-patch as synonym for -s' ' test_must_be_empty err ' +test_expect_success 'git diff-files --no-patch --patch shows the patch' ' + git diff-files --no-patch --patch >diff-np-output 2>err && + compare_diff_patch expected actual +' + test_done -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch 2013-07-15 17:55 ` [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy @ 2013-07-15 18:09 ` Jonathan Nieder 2013-07-15 18:23 ` Matthieu Moy 0 siblings, 1 reply; 43+ messages in thread From: Jonathan Nieder @ 2013-07-15 18:09 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, gitster Matthieu Moy wrote: > All options that trigger a patch output now override --no-patch. > > The case of --binary is particular as the name may suggest that it turns Usage nit: this should say "is unusual" or "In the case of --binary in particular, the name may suggest ...". > a normal patch into a binary patch, but it actually already enables patch > output when normally disabled (e.g. "git log --binary" displays a patch), > hence it makes sense that "git show --no-patch --binary" display the > binary patch. [...] > --- a/t/t4000-diff-format.sh > +++ b/t/t4000-diff-format.sh > @@ -71,4 +71,9 @@ test_expect_success 'git diff-files --no-patch as synonym for -s' ' > test_must_be_empty err > ' > > +test_expect_success 'git diff-files --no-patch --patch shows the patch' ' > + git diff-files --no-patch --patch >diff-np-output 2>err && > + compare_diff_patch expected actual Shouldn't that be "compare_diff_patch expected diff-np-output"? A couple of other test ideas: - "git diff-files --patch --no-patch" - "git diff-files -s --patch-with-stat" Aside from that, the patch looks good. Thanks, Jonathan ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch 2013-07-15 18:09 ` Jonathan Nieder @ 2013-07-15 18:23 ` Matthieu Moy 2013-07-15 18:58 ` Jonathan Nieder 0 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 18:23 UTC (permalink / raw) To: Jonathan Nieder; +Cc: git, gitster Jonathan Nieder <jrnieder@gmail.com> writes: > Matthieu Moy wrote: > >> All options that trigger a patch output now override --no-patch. >> >> The case of --binary is particular as the name may suggest that it turns > > Usage nit: this should say "is unusual" I don't get it. The point is not that --binary is unusual, but that it is a particular case that deserves extra attention. > or "In the case of --binary in particular, the name may suggest ...". Not really. I'd use "in particular" if --binary was a sub-case of the others, but here I'm precisely saying that it may not be. >> --- a/t/t4000-diff-format.sh >> +++ b/t/t4000-diff-format.sh >> @@ -71,4 +71,9 @@ test_expect_success 'git diff-files --no-patch as synonym for -s' ' >> test_must_be_empty err >> ' >> >> +test_expect_success 'git diff-files --no-patch --patch shows the patch' ' >> + git diff-files --no-patch --patch >diff-np-output 2>err && >> + compare_diff_patch expected actual > > Shouldn't that be "compare_diff_patch expected diff-np-output"? Oops, right. > A couple of other test ideas: > > - "git diff-files --patch --no-patch" > - "git diff-files -s --patch-with-stat" I'd rather avoid having a too long list here, or we'll end-up testing all combinations of options ... I'll send a reroll tomorrow. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch 2013-07-15 18:23 ` Matthieu Moy @ 2013-07-15 18:58 ` Jonathan Nieder 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy 0 siblings, 1 reply; 43+ messages in thread From: Jonathan Nieder @ 2013-07-15 18:58 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, gitster Matthieu Moy wrote: > Jonathan Nieder <jrnieder@gmail.com> writes: >> Matthieu Moy wrote: >>> All options that trigger a patch output now override --no-patch. >>> >>> The case of --binary is particular as the name may suggest that it turns >> >> Usage nit: this should say "is unusual" > > I don't get it. The point is not that --binary is unusual, but that it > is a particular case that deserves extra attention. Ah, so you mean: "The case of --binary deserves extra attention because ...". "is particular" would be an unusual expression, meaning something like "is made of particles". It's a weird case in English usage where a word commonly appears attached to a noun ("This particular case") but cannot be used as the RHS of "is" ("This case is particular"). [...] >> A couple of other test ideas: >> >> - "git diff-files --patch --no-patch" >> - "git diff-files -s --patch-with-stat" > > I'd rather avoid having a too long list here, or we'll end-up testing > all combinations of options ... Sure. The point of "--patch --no-patch" is to test that ordering is respected. The point of "--no-patch --patch-with-stat" is so we remember that there are options other than --patch that should override --no-patch, for example if this code is ever converted to parse_options some day. > I'll send a reroll tomorrow. Thanks for the quick and thoughtful work. ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v4 0/6] Make "git show -s" easier to discover for users 2013-07-15 18:58 ` Jonathan Nieder @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 1/6] t4000-diff-format.sh: modernize style Matthieu Moy ` (7 more replies) 0 siblings, 8 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy One real fix since v3: there was an incorrect file name in a test (noticed by Jonathan). Now, all actual outputs are called "actual". Other than that: extra tests, and style fixes in commit messages. Matthieu Moy (6): t4000-diff-format.sh: modernize style diff: allow --no-patch as synonym for -s diff: allow --patch & cie to override -s/--no-patch Documentation/git-show.txt: include common diff options, like git-log.txt Documentation: move description of -s, --no-patch to diff-options.txt Documentation/git-log.txt: capitalize section names Documentation/diff-options.txt | 5 ++++ Documentation/git-log.txt | 8 +++---- Documentation/git-show.txt | 9 +++++++ Documentation/rev-list-options.txt | 3 --- diff.c | 30 ++++++++++++++---------- t/t4000-diff-format.sh | 48 +++++++++++++++++++++++++++++++------- 6 files changed, 75 insertions(+), 28 deletions(-) -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v4 1/6] t4000-diff-format.sh: modernize style 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 2/6] diff: allow --no-patch as synonym for -s Matthieu Moy ` (6 subsequent siblings) 7 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- t/t4000-diff-format.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index 6ddd469..2b5dffc 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -15,17 +15,17 @@ line 3' cat path0 >path1 chmod +x path1 -test_expect_success \ - 'update-index --add two files with and without +x.' \ - 'git update-index --add path0 path1' +test_expect_success 'update-index --add two files with and without +x.' ' + git update-index --add path0 path1 +' mv path0 path0- sed -e 's/line/Line/' <path0- >path0 chmod +x path0 rm -f path1 -test_expect_success \ - 'git diff-files -p after editing work tree.' \ - 'git diff-files -p >current' +test_expect_success 'git diff-files -p after editing work tree.' ' + git diff-files -p >actual +' # that's as far as it comes if [ "$(git config --get core.filemode)" = false ] @@ -55,8 +55,8 @@ deleted file mode 100755 -line 3 EOF -test_expect_success \ - 'validate git diff-files -p output.' \ - 'compare_diff_patch current expected' +test_expect_success 'validate git diff-files -p output.' ' + compare_diff_patch expected actual +' test_done -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v4 2/6] diff: allow --no-patch as synonym for -s 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 1/6] t4000-diff-format.sh: modernize style Matthieu Moy @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy ` (5 subsequent siblings) 7 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy This follows the usual convention of having a --no-foo option to negate --foo. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/rev-list-options.txt | 1 + diff.c | 2 +- t/t4000-diff-format.sh | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index e157ec3..c128a85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -851,5 +851,6 @@ options may be given. See linkgit:git-diff-files[1] for more options. Show the tree objects in the diff output. This implies '-r'. -s:: +--no-patch:: Suppress diff output. endif::git-rev-list[] diff --git a/diff.c b/diff.c index 6578690..6bd821d 100644 --- a/diff.c +++ b/diff.c @@ -3551,7 +3551,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; - else if (!strcmp(arg, "-s")) + else if (!strcmp(arg, "-s") || !strcmp(arg, "--no-patch")) options->output_format |= DIFF_FORMAT_NO_OUTPUT; else if (!prefixcmp(arg, "--stat")) /* --stat, --stat-width, --stat-name-width, or --stat-count */ diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index 2b5dffc..3b9a9ae 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -59,4 +59,16 @@ test_expect_success 'validate git diff-files -p output.' ' compare_diff_patch expected actual ' +test_expect_success 'git diff-files -s after editing work tree' ' + git diff-files -s >actual 2>err && + test_must_be_empty actual && + test_must_be_empty err +' + +test_expect_success 'git diff-files --no-patch as synonym for -s' ' + git diff-files --no-patch >actual 2>err && + test_must_be_empty actual && + test_must_be_empty err +' + test_done -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v4 3/6] diff: allow --patch & cie to override -s/--no-patch 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 1/6] t4000-diff-format.sh: modernize style Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 2/6] diff: allow --no-patch as synonym for -s Matthieu Moy @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy ` (4 subsequent siblings) 7 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy All options that trigger a patch output now override --no-patch. The case of --binary deserves extra attention: the name may suggest that it turns a normal patch into a binary patch, but it actually already enables patch output when normally disabled (e.g. "git log --binary" displays a patch), hence it makes sense for "git show --no-patch --binary" to display the binary patch. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- diff.c | 28 +++++++++++++++++----------- t/t4000-diff-format.sh | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/diff.c b/diff.c index 6bd821d..66ab714 100644 --- a/diff.c +++ b/diff.c @@ -3508,6 +3508,11 @@ static int parse_submodule_opt(struct diff_options *options, const char *value) return 1; } +static void enable_patch_output(int *fmt) { + *fmt &= ~DIFF_FORMAT_NO_OUTPUT; + *fmt |= DIFF_FORMAT_PATCH; +} + int diff_opt_parse(struct diff_options *options, const char **av, int ac) { const char *arg = av[0]; @@ -3515,15 +3520,15 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) int argcount; /* Output format options */ - if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) - options->output_format |= DIFF_FORMAT_PATCH; - else if (opt_arg(arg, 'U', "unified", &options->context)) - options->output_format |= DIFF_FORMAT_PATCH; + if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch") + || opt_arg(arg, 'U', "unified", &options->context)) + enable_patch_output(&options->output_format); else if (!strcmp(arg, "--raw")) options->output_format |= DIFF_FORMAT_RAW; - else if (!strcmp(arg, "--patch-with-raw")) - options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_RAW; - else if (!strcmp(arg, "--numstat")) + else if (!strcmp(arg, "--patch-with-raw")) { + enable_patch_output(&options->output_format); + options->output_format |= DIFF_FORMAT_RAW; + } else if (!strcmp(arg, "--numstat")) options->output_format |= DIFF_FORMAT_NUMSTAT; else if (!strcmp(arg, "--shortstat")) options->output_format |= DIFF_FORMAT_SHORTSTAT; @@ -3545,9 +3550,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_CHECKDIFF; else if (!strcmp(arg, "--summary")) options->output_format |= DIFF_FORMAT_SUMMARY; - else if (!strcmp(arg, "--patch-with-stat")) - options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_DIFFSTAT; - else if (!strcmp(arg, "--name-only")) + else if (!strcmp(arg, "--patch-with-stat")) { + enable_patch_output(&options->output_format); + options->output_format |= DIFF_FORMAT_DIFFSTAT; + } else if (!strcmp(arg, "--name-only")) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; @@ -3624,7 +3630,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) /* flags options */ else if (!strcmp(arg, "--binary")) { - options->output_format |= DIFF_FORMAT_PATCH; + enable_patch_output(&options->output_format); DIFF_OPT_SET(options, BINARY); } else if (!strcmp(arg, "--full-index")) diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index 3b9a9ae..8de36b7 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -71,4 +71,22 @@ test_expect_success 'git diff-files --no-patch as synonym for -s' ' test_must_be_empty err ' +test_expect_success 'git diff-files --no-patch --patch shows the patch' ' + git diff-files --no-patch --patch >actual && + compare_diff_patch expected actual +' + +test_expect_success 'git diff-files --no-patch --patch-with-raw shows the patch and raw data' ' + git diff-files --no-patch --patch-with-raw >actual && + grep -q "^:100644 100755 .* 0000000000000000000000000000000000000000 M path0\$" actual && + tail -n +4 actual >actual-patch && + compare_diff_patch expected actual-patch +' + +test_expect_success 'git diff-files --patch --no-patch does not show the patch' ' + git diff-files --patch --no-patch >actual 2>err && + test_must_be_empty actual && + test_must_be_empty err +' + test_done -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v4 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (2 preceding siblings ...) 2013-07-16 8:05 ` [PATCH v4 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 5/6] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy ` (3 subsequent siblings) 7 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-show.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt index ae4edcc..4e617e6 100644 --- a/Documentation/git-show.txt +++ b/Documentation/git-show.txt @@ -45,6 +45,15 @@ include::pretty-options.txt[] include::pretty-formats.txt[] +COMMON DIFF OPTIONS +------------------- + +:git-log: 1 +include::diff-options.txt[] + +include::diff-generate-patch.txt[] + + EXAMPLES -------- -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v4 5/6] Documentation: move description of -s, --no-patch to diff-options.txt 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (3 preceding siblings ...) 2013-07-16 8:05 ` [PATCH v4 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy ` (2 subsequent siblings) 7 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Technically, "-s, --no-patch" is implemented in diff.c ("git diff --no-patch" is essentially useless, but valid). From the user point of view, this allows the documentation to show up in "git show --help", which is one of the most useful use of the option. While we're there, add a sentence explaining why the option can be useful. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/diff-options.txt | 5 +++++ Documentation/rev-list-options.txt | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 87e92d6..bbed2cd 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -26,6 +26,11 @@ ifndef::git-format-patch[] {git-diff? This is the default.} endif::git-format-patch[] +-s:: +--no-patch:: + Suppress diff output. Useful for commands like `git show` that + show the patch by default, or to cancel the effect of `--patch`. + -U<n>:: --unified=<n>:: Generate diffs with <n> lines of context instead of diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index c128a85..e632e85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -849,8 +849,4 @@ options may be given. See linkgit:git-diff-files[1] for more options. -t:: Show the tree objects in the diff output. This implies '-r'. - --s:: ---no-patch:: - Suppress diff output. endif::git-rev-list[] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v4 6/6] Documentation/git-log.txt: capitalize section names 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (4 preceding siblings ...) 2013-07-16 8:05 ` [PATCH v4 5/6] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy @ 2013-07-16 8:05 ` Matthieu Moy 2013-07-16 17:46 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Jonathan Nieder 2013-07-18 0:51 ` Junio C Hamano 7 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-16 8:05 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy This is the convention in most other files and even at the beginning of git-log.txt Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-log.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 2ea79ba..2eda5e4 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -97,7 +97,7 @@ include::rev-list-options.txt[] include::pretty-formats.txt[] -Common diff options +COMMON DIFF OPTIONS ------------------- :git-log: 1 @@ -105,7 +105,7 @@ include::diff-options.txt[] include::diff-generate-patch.txt[] -Examples +EXAMPLES -------- `git log --no-merges`:: @@ -161,12 +161,12 @@ git log -L '/int main/',/^}/:main.c:: `git log -3`:: Limits the number of commits to show to 3. -Discussion +DISCUSSION ---------- include::i18n.txt[] -Configuration +CONFIGURATION ------------- See linkgit:git-config[1] for core variables and linkgit:git-diff[1] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH v4 0/6] Make "git show -s" easier to discover for users 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (5 preceding siblings ...) 2013-07-16 8:05 ` [PATCH v4 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy @ 2013-07-16 17:46 ` Jonathan Nieder 2013-07-16 18:07 ` Stefan Beller 2013-07-18 0:51 ` Junio C Hamano 7 siblings, 1 reply; 43+ messages in thread From: Jonathan Nieder @ 2013-07-16 17:46 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, gitster Matthieu Moy wrote: > Matthieu Moy (6): > t4000-diff-format.sh: modernize style > diff: allow --no-patch as synonym for -s > diff: allow --patch & cie to override -s/--no-patch > Documentation/git-show.txt: include common diff options, like > git-log.txt > Documentation: move description of -s, --no-patch to diff-options.txt > Documentation/git-log.txt: capitalize section names > > Documentation/diff-options.txt | 5 ++++ > Documentation/git-log.txt | 8 +++---- > Documentation/git-show.txt | 9 +++++++ > Documentation/rev-list-options.txt | 3 --- > diff.c | 30 ++++++++++++++---------- > t/t4000-diff-format.sh | 48 +++++++++++++++++++++++++++++++------- > 6 files changed, 75 insertions(+), 28 deletions(-) Thanks! I think this series is ready now. Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH v4 0/6] Make "git show -s" easier to discover for users 2013-07-16 17:46 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Jonathan Nieder @ 2013-07-16 18:07 ` Stefan Beller 0 siblings, 0 replies; 43+ messages in thread From: Stefan Beller @ 2013-07-16 18:07 UTC (permalink / raw) To: Jonathan Nieder; +Cc: Matthieu Moy, git, gitster [-- Attachment #1: Type: text/plain, Size: 1018 bytes --] On 07/16/2013 07:46 PM, Jonathan Nieder wrote: > Matthieu Moy wrote: > >> Matthieu Moy (6): >> t4000-diff-format.sh: modernize style >> diff: allow --no-patch as synonym for -s >> diff: allow --patch & cie to override -s/--no-patch >> Documentation/git-show.txt: include common diff options, like >> git-log.txt >> Documentation: move description of -s, --no-patch to diff-options.txt >> Documentation/git-log.txt: capitalize section names >> >> Documentation/diff-options.txt | 5 ++++ >> Documentation/git-log.txt | 8 +++---- >> Documentation/git-show.txt | 9 +++++++ >> Documentation/rev-list-options.txt | 3 --- >> diff.c | 30 ++++++++++++++---------- >> t/t4000-diff-format.sh | 48 +++++++++++++++++++++++++++++++------- >> 6 files changed, 75 insertions(+), 28 deletions(-) > > Thanks! I think this series is ready now. > > Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Thanks as well. :) [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 899 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH v4 0/6] Make "git show -s" easier to discover for users 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (6 preceding siblings ...) 2013-07-16 17:46 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Jonathan Nieder @ 2013-07-18 0:51 ` Junio C Hamano 7 siblings, 0 replies; 43+ messages in thread From: Junio C Hamano @ 2013-07-18 0:51 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, jrnieder Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v3 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (2 preceding siblings ...) 2013-07-15 17:55 ` [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 5/6] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy 5 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-show.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt index ae4edcc..4e617e6 100644 --- a/Documentation/git-show.txt +++ b/Documentation/git-show.txt @@ -45,6 +45,15 @@ include::pretty-options.txt[] include::pretty-formats.txt[] +COMMON DIFF OPTIONS +------------------- + +:git-log: 1 +include::diff-options.txt[] + +include::diff-generate-patch.txt[] + + EXAMPLES -------- -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v3 5/6] Documentation: move description of -s, --no-patch to diff-options.txt 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (3 preceding siblings ...) 2013-07-15 17:55 ` [PATCH v3 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy 5 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy Technically, "-s, --no-patch" is implemented in diff.c ("git diff --no-patch" is essentially useless, but valid). From the user point of view, this allows the documentation to show up in "git show --help", which is one of the most useful use of the option. While we're there, add a sentence explaining why the option can be useful. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/diff-options.txt | 5 +++++ Documentation/rev-list-options.txt | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 87e92d6..bbed2cd 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -26,6 +26,11 @@ ifndef::git-format-patch[] {git-diff? This is the default.} endif::git-format-patch[] +-s:: +--no-patch:: + Suppress diff output. Useful for commands like `git show` that + show the patch by default, or to cancel the effect of `--patch`. + -U<n>:: --unified=<n>:: Generate diffs with <n> lines of context instead of diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index c128a85..e632e85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -849,8 +849,4 @@ options may be given. See linkgit:git-diff-files[1] for more options. -t:: Show the tree objects in the diff output. This implies '-r'. - --s:: ---no-patch:: - Suppress diff output. endif::git-rev-list[] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v3 6/6] Documentation/git-log.txt: capitalize section names 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy ` (4 preceding siblings ...) 2013-07-15 17:55 ` [PATCH v3 5/6] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy @ 2013-07-15 17:55 ` Matthieu Moy 2013-07-15 18:17 ` Jonathan Nieder 5 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:55 UTC (permalink / raw) To: git, gitster; +Cc: jrnieder, Matthieu Moy This is the convention in other files and even at the beginning of git-log.txt Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-log.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 2ea79ba..2eda5e4 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -97,7 +97,7 @@ include::rev-list-options.txt[] include::pretty-formats.txt[] -Common diff options +COMMON DIFF OPTIONS ------------------- :git-log: 1 @@ -105,7 +105,7 @@ include::diff-options.txt[] include::diff-generate-patch.txt[] -Examples +EXAMPLES -------- `git log --no-merges`:: @@ -161,12 +161,12 @@ git log -L '/int main/',/^}/:main.c:: `git log -3`:: Limits the number of commits to show to 3. -Discussion +DISCUSSION ---------- include::i18n.txt[] -Configuration +CONFIGURATION ------------- See linkgit:git-config[1] for core variables and linkgit:git-diff[1] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH v3 6/6] Documentation/git-log.txt: capitalize section names 2013-07-15 17:55 ` [PATCH v3 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy @ 2013-07-15 18:17 ` Jonathan Nieder 0 siblings, 0 replies; 43+ messages in thread From: Jonathan Nieder @ 2013-07-15 18:17 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, gitster Matthieu Moy wrote: > This is the convention in other files and even at the beginning of git-log.txt The docs aren't so consistent on this, but I agree that it makes sense to at least be consistent within the generated git-log.html. :) Generally the series looks very good. Thanks for taking this on. ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH v2 2/5] diff: allow --patch & cie to override -s/--no-patch 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy @ 2013-07-15 17:05 ` Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy ` (2 subsequent siblings) 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:05 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy All options that trigger a patch output now override --no-patch. The case of --binary is particular as the name may suggest that it turns a normal patch into a binary patch, but it actually already enables patch output when normally disabled (e.g. "git log --binary" displays a patch), hence it makes sense that "git show --no-patch --binary" display the binary patch. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- This is the one which changed. diff.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/diff.c b/diff.c index 6bd821d..66ab714 100644 --- a/diff.c +++ b/diff.c @@ -3508,6 +3508,11 @@ static int parse_submodule_opt(struct diff_options *options, const char *value) return 1; } +static void enable_patch_output(int *fmt) { + *fmt &= ~DIFF_FORMAT_NO_OUTPUT; + *fmt |= DIFF_FORMAT_PATCH; +} + int diff_opt_parse(struct diff_options *options, const char **av, int ac) { const char *arg = av[0]; @@ -3515,15 +3520,15 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) int argcount; /* Output format options */ - if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch")) - options->output_format |= DIFF_FORMAT_PATCH; - else if (opt_arg(arg, 'U', "unified", &options->context)) - options->output_format |= DIFF_FORMAT_PATCH; + if (!strcmp(arg, "-p") || !strcmp(arg, "-u") || !strcmp(arg, "--patch") + || opt_arg(arg, 'U', "unified", &options->context)) + enable_patch_output(&options->output_format); else if (!strcmp(arg, "--raw")) options->output_format |= DIFF_FORMAT_RAW; - else if (!strcmp(arg, "--patch-with-raw")) - options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_RAW; - else if (!strcmp(arg, "--numstat")) + else if (!strcmp(arg, "--patch-with-raw")) { + enable_patch_output(&options->output_format); + options->output_format |= DIFF_FORMAT_RAW; + } else if (!strcmp(arg, "--numstat")) options->output_format |= DIFF_FORMAT_NUMSTAT; else if (!strcmp(arg, "--shortstat")) options->output_format |= DIFF_FORMAT_SHORTSTAT; @@ -3545,9 +3550,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->output_format |= DIFF_FORMAT_CHECKDIFF; else if (!strcmp(arg, "--summary")) options->output_format |= DIFF_FORMAT_SUMMARY; - else if (!strcmp(arg, "--patch-with-stat")) - options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_DIFFSTAT; - else if (!strcmp(arg, "--name-only")) + else if (!strcmp(arg, "--patch-with-stat")) { + enable_patch_output(&options->output_format); + options->output_format |= DIFF_FORMAT_DIFFSTAT; + } else if (!strcmp(arg, "--name-only")) options->output_format |= DIFF_FORMAT_NAME; else if (!strcmp(arg, "--name-status")) options->output_format |= DIFF_FORMAT_NAME_STATUS; @@ -3624,7 +3630,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) /* flags options */ else if (!strcmp(arg, "--binary")) { - options->output_format |= DIFF_FORMAT_PATCH; + enable_patch_output(&options->output_format); DIFF_OPT_SET(options, BINARY); } else if (!strcmp(arg, "--full-index")) -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v2 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 2/5] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy @ 2013-07-15 17:05 ` Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 4/5] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 5/5] Documentation/git-log.txt: capitalize section names Matthieu Moy 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:05 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-show.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt index ae4edcc..4e617e6 100644 --- a/Documentation/git-show.txt +++ b/Documentation/git-show.txt @@ -45,6 +45,15 @@ include::pretty-options.txt[] include::pretty-formats.txt[] +COMMON DIFF OPTIONS +------------------- + +:git-log: 1 +include::diff-options.txt[] + +include::diff-generate-patch.txt[] + + EXAMPLES -------- -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v2 4/5] Documentation: move description of -s, --no-patch to diff-options.txt 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy ` (2 preceding siblings ...) 2013-07-15 17:05 ` [PATCH v2 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy @ 2013-07-15 17:05 ` Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 5/5] Documentation/git-log.txt: capitalize section names Matthieu Moy 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:05 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy Technically, "-s, --no-patch" is implemented in diff.c ("git diff --no-patch" is essentially useless, but valid). From the user point of view, this allows the documentation to show up in "git show --help", which is one of the most useful use of the option. While we're there, add a sentence explaining why the option can be useful. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/diff-options.txt | 5 +++++ Documentation/rev-list-options.txt | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 87e92d6..bbed2cd 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -26,6 +26,11 @@ ifndef::git-format-patch[] {git-diff? This is the default.} endif::git-format-patch[] +-s:: +--no-patch:: + Suppress diff output. Useful for commands like `git show` that + show the patch by default, or to cancel the effect of `--patch`. + -U<n>:: --unified=<n>:: Generate diffs with <n> lines of context instead of diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index c128a85..e632e85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -849,8 +849,4 @@ options may be given. See linkgit:git-diff-files[1] for more options. -t:: Show the tree objects in the diff output. This implies '-r'. - --s:: ---no-patch:: - Suppress diff output. endif::git-rev-list[] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH v2 5/5] Documentation/git-log.txt: capitalize section names 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy ` (3 preceding siblings ...) 2013-07-15 17:05 ` [PATCH v2 4/5] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy @ 2013-07-15 17:05 ` Matthieu Moy 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 17:05 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy This is the convention in other files and even at the beginning of git-log.txt Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-log.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 2ea79ba..2eda5e4 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -97,7 +97,7 @@ include::rev-list-options.txt[] include::pretty-formats.txt[] -Common diff options +COMMON DIFF OPTIONS ------------------- :git-log: 1 @@ -105,7 +105,7 @@ include::diff-options.txt[] include::diff-generate-patch.txt[] -Examples +EXAMPLES -------- `git log --no-merges`:: @@ -161,12 +161,12 @@ git log -L '/int main/',/^}/:main.c:: `git log -3`:: Limits the number of commits to show to 3. -Discussion +DISCUSSION ---------- include::i18n.txt[] -Configuration +CONFIGURATION ------------- See linkgit:git-config[1] for core variables and linkgit:git-diff[1] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 13:07 ` [PATCH 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy 2013-07-15 13:07 ` [PATCH 2/5] diff: allow --patch to override -s/--no-patch Matthieu Moy @ 2013-07-15 13:07 ` Matthieu Moy 2013-07-15 14:54 ` Junio C Hamano 2013-07-15 13:07 ` [PATCH 4/5] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-15 13:07 ` [PATCH 5/5] Documentation/git-log.txt: capitalize section names Matthieu Moy 4 siblings, 1 reply; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 13:07 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-show.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt index ae4edcc..4e617e6 100644 --- a/Documentation/git-show.txt +++ b/Documentation/git-show.txt @@ -45,6 +45,15 @@ include::pretty-options.txt[] include::pretty-formats.txt[] +COMMON DIFF OPTIONS +------------------- + +:git-log: 1 +include::diff-options.txt[] + +include::diff-generate-patch.txt[] + + EXAMPLES -------- -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* Re: [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt 2013-07-15 13:07 ` [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy @ 2013-07-15 14:54 ` Junio C Hamano 2013-07-15 15:06 ` Junio C Hamano 0 siblings, 1 reply; 43+ messages in thread From: Junio C Hamano @ 2013-07-15 14:54 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, stefanbeller Matthieu Moy <Matthieu.Moy@imag.fr> writes: > Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> > --- > Documentation/git-show.txt | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt > index ae4edcc..4e617e6 100644 > --- a/Documentation/git-show.txt > +++ b/Documentation/git-show.txt > @@ -45,6 +45,15 @@ include::pretty-options.txt[] > include::pretty-formats.txt[] > > > +COMMON DIFF OPTIONS > +------------------- > + > +:git-log: 1 > +include::diff-options.txt[] > + > +include::diff-generate-patch.txt[] > + > + > EXAMPLES > -------- This is a good start; the output should match what you would get for git-log(1) with the above. But we would need to say, unlike "log" whose default is not to show any patch, "show" that works on a commit defaults to "--cc" somewhere. Other than that the whole series looks sensible to me. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt 2013-07-15 14:54 ` Junio C Hamano @ 2013-07-15 15:06 ` Junio C Hamano 0 siblings, 0 replies; 43+ messages in thread From: Junio C Hamano @ 2013-07-15 15:06 UTC (permalink / raw) To: Matthieu Moy; +Cc: git, stefanbeller Junio C Hamano <gitster@pobox.com> writes: > Matthieu Moy <Matthieu.Moy@imag.fr> writes: > >> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> >> --- >> Documentation/git-show.txt | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt >> index ae4edcc..4e617e6 100644 >> --- a/Documentation/git-show.txt >> +++ b/Documentation/git-show.txt >> @@ -45,6 +45,15 @@ include::pretty-options.txt[] >> include::pretty-formats.txt[] >> >> >> +COMMON DIFF OPTIONS >> +------------------- >> + >> +:git-log: 1 >> +include::diff-options.txt[] >> + >> +include::diff-generate-patch.txt[] >> + >> + >> EXAMPLES >> -------- > > This is a good start; the output should match what you would get for > git-log(1) with the above. > > But we would need to say, unlike "log" whose default is not to show > any patch, "show" that works on a commit defaults to "--cc" > somewhere. > > Other than that the whole series looks sensible to me. Thanks. Actually, we say "log message and textual diff" with "merge commit ... diff-tree --cc", so please scratch the above comment (I think we should however stop saying "in a special format" there---when the combined diff was invented, the format may have been novelty, but it no longer is). ^ permalink raw reply [flat|nested] 43+ messages in thread
* [PATCH 4/5] Documentation: move description of -s, --no-patch to diff-options.txt 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy ` (2 preceding siblings ...) 2013-07-15 13:07 ` [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy @ 2013-07-15 13:07 ` Matthieu Moy 2013-07-15 13:07 ` [PATCH 5/5] Documentation/git-log.txt: capitalize section names Matthieu Moy 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 13:07 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy Technically, "-s, --no-patch" is implemented in diff.c ("git diff --no-patch" is essentially useless, but valid). From the user point of view, this allows the documentation to show up in "git show --help", which is one of the most useful use of the option. While we're there, add a sentence explaining why the option can be useful. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- It might make sense to surround this with ifndef::git-diff[], but since "git diff --no-patch" actually works, I've left it unconditional to be technically correct. Documentation/diff-options.txt | 5 +++++ Documentation/rev-list-options.txt | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 87e92d6..bbed2cd 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -26,6 +26,11 @@ ifndef::git-format-patch[] {git-diff? This is the default.} endif::git-format-patch[] +-s:: +--no-patch:: + Suppress diff output. Useful for commands like `git show` that + show the patch by default, or to cancel the effect of `--patch`. + -U<n>:: --unified=<n>:: Generate diffs with <n> lines of context instead of diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index c128a85..e632e85 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -849,8 +849,4 @@ options may be given. See linkgit:git-diff-files[1] for more options. -t:: Show the tree objects in the diff output. This implies '-r'. - --s:: ---no-patch:: - Suppress diff output. endif::git-rev-list[] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
* [PATCH 5/5] Documentation/git-log.txt: capitalize section names 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy ` (3 preceding siblings ...) 2013-07-15 13:07 ` [PATCH 4/5] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy @ 2013-07-15 13:07 ` Matthieu Moy 4 siblings, 0 replies; 43+ messages in thread From: Matthieu Moy @ 2013-07-15 13:07 UTC (permalink / raw) To: git, gitster; +Cc: stefanbeller, Matthieu Moy This is the convention in other files and even at the beginning of git-log.txt Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> --- Documentation/git-log.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 2ea79ba..2eda5e4 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -97,7 +97,7 @@ include::rev-list-options.txt[] include::pretty-formats.txt[] -Common diff options +COMMON DIFF OPTIONS ------------------- :git-log: 1 @@ -105,7 +105,7 @@ include::diff-options.txt[] include::diff-generate-patch.txt[] -Examples +EXAMPLES -------- `git log --no-merges`:: @@ -161,12 +161,12 @@ git log -L '/int main/',/^}/:main.c:: `git log -3`:: Limits the number of commits to show to 3. -Discussion +DISCUSSION ---------- include::i18n.txt[] -Configuration +CONFIGURATION ------------- See linkgit:git-config[1] for core variables and linkgit:git-diff[1] -- 1.8.3.1.495.g13f33cf.dirty ^ permalink raw reply related [flat|nested] 43+ messages in thread
end of thread, other threads:[~2013-07-18 0:51 UTC | newest] Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-07-15 11:25 Bug in "git show"? Stefan Beller 2013-07-15 12:12 ` Matthieu Moy 2013-07-15 12:23 ` Stefan Beller 2013-07-15 13:07 ` [PATCH 0/5] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 13:07 ` [PATCH 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy 2013-07-15 13:07 ` [PATCH 2/5] diff: allow --patch to override -s/--no-patch Matthieu Moy 2013-07-15 15:02 ` Junio C Hamano 2013-07-15 15:28 ` Matthieu Moy 2013-07-15 16:40 ` Junio C Hamano 2013-07-15 17:05 ` [PATCH v2 0/5] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 1/5] diff: allow --no-patch as synonym for -s Matthieu Moy 2013-07-15 17:35 ` Jonathan Nieder 2013-07-15 17:55 ` [PATCH v3 0/6] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 1/6] t4000-diff-format.sh: modernize style Matthieu Moy 2013-07-15 18:00 ` Jonathan Nieder 2013-07-15 17:55 ` [PATCH v3 2/6] diff: allow --no-patch as synonym for -s Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy 2013-07-15 18:09 ` Jonathan Nieder 2013-07-15 18:23 ` Matthieu Moy 2013-07-15 18:58 ` Jonathan Nieder 2013-07-16 8:05 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 1/6] t4000-diff-format.sh: modernize style Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 2/6] diff: allow --no-patch as synonym for -s Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 3/6] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 5/6] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-16 8:05 ` [PATCH v4 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy 2013-07-16 17:46 ` [PATCH v4 0/6] Make "git show -s" easier to discover for users Jonathan Nieder 2013-07-16 18:07 ` Stefan Beller 2013-07-18 0:51 ` Junio C Hamano 2013-07-15 17:55 ` [PATCH v3 4/6] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 5/6] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-15 17:55 ` [PATCH v3 6/6] Documentation/git-log.txt: capitalize section names Matthieu Moy 2013-07-15 18:17 ` Jonathan Nieder 2013-07-15 17:05 ` [PATCH v2 2/5] diff: allow --patch & cie to override -s/--no-patch Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 4/5] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-15 17:05 ` [PATCH v2 5/5] Documentation/git-log.txt: capitalize section names Matthieu Moy 2013-07-15 13:07 ` [PATCH 3/5] Documentation/git-show.txt: include common diff options, like git-log.txt Matthieu Moy 2013-07-15 14:54 ` Junio C Hamano 2013-07-15 15:06 ` Junio C Hamano 2013-07-15 13:07 ` [PATCH 4/5] Documentation: move description of -s, --no-patch to diff-options.txt Matthieu Moy 2013-07-15 13:07 ` [PATCH 5/5] Documentation/git-log.txt: capitalize section names Matthieu Moy
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).