git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/2] git diff -q option removal

From
Stefan Beller <stefanbeller@googlemail.com>
Date
Jul 16, 2013, 10:28 UTC
Message-ID
<1373970487-32595-1-git-send-email-stefanbeller@googlemail.com>
In-Reply-To
<20130714220739.GC13444@google.com>
On 07/15/2013 12:07 AM, Jonathan Nieder wrote:
Show 21 quoted lines
> This feature was obviously never tested with --no-index, so I agree it
> makes sense to remove it.  Probably the commit message and a comment
> should say so, though.  E.g.:
>
>       diff --no-index: remove nonfunctional "-q" handling
>
>       Before v1.5.6-rc1~41^2~2, the option parsing for diff --no-index
>       and "git diff-files" shared code.  In "git diff-files", "-q" means
>       to be silent about removed files.  In "git diff --no-index", in
>       various versions it has been an error, an infinite loop, or a no-op.
> 
>       Simplify the code to clarify that it is now a no-op, continuing to
>       accept and ignore the -q option in "git diff --no-index" to avoid
>       breaking scripts.
>
> I wouldn't mind removing support for "-q" altogether, by the way (as a
> separate change).
>
> Hope that helps,
> Jonathan
>
I am resending the commit with a different wording, thanks to Jonathan.   

However I tried to remove support for -q in a separate commit, and I have some questions about the structure of the files. (I am sure it's documented, but I cannot find it, so please hint me where to read.)

The changes in the following patch are in diff_no_index.c, but the diff_no_index(...) is called from cmd_diff, which is in builtin/diff.c That cmd_diff is actually called from git.c having the { "diff", cmd_diff }, entry in handle_internal_command.

My question now is this: Why is the builtin/diff.c relying on stuff outside of builtin/ ? Wouldn't it be better to move all these files (such as diff_no_index.c) into the builtin folder as well?

Regarding the removal of the -q option, I tried it in the second patch. Is it as easy as that, or am I missing the point?

The first patch doesn't change the behavior, so I'd assume it's safe to apply it to origin/sb/misc-fixes, whereas the second patch will make git diff complain about the -q option, so I'd assume it would wait for the next major release?

Before:
	touch actual_file
	git diff -q  actual_file no_file
	error: Could not access 'no_file'
	echo $?
	1
After:
	touch actual_file
	git diff -q  actual_file no_file
	fatal: invalid diff option/value: -q
	echo $?
	128

Thanks, Stefan

Stefan Beller (2):
  diff --no-index: remove nonfunctional "-q" handling
  git diff: Remove -q option to stay silent on missing files.
 Documentation/git-diff-files.txt | 6 +-----
 diff-no-index.c                  | 5 -----
 2 files changed, 1 insertion(+), 10 deletions(-)
-- 
1.8.2.3.10.g2733812
Previous: Jonathan NiederNext: Stefan Beller
Message 6 of 25 in “daemon.c:handle: Remove unneeded check for null pointer.”
  1. 1/4 daemon.c:handle: Remove unneeded check for null pointer.Stefan Beller, Jul 14, 2013
  2. 2/4 commit: Fix a memory leak in determine_author_infoStefan Beller, Jul 14, 2013
  3. Jonathan NiederJul 14, 2013
  4. 3/4 diff-no-index: Remove unused variable.Stefan Beller, Jul 14, 2013
  5. Jonathan NiederJul 14, 2013
  6. 0/2 git diff -q option removalStefan Beller, Jul 16, 2013
  7. 1/2 diff --no-index: remove nonfunctional "-q" handlingStefan Beller, Jul 16, 2013
  8. 2/2 diff: Remove -q to stay silent on missing files.Stefan Beller, Jul 16, 2013
  9. Junio C HamanoJul 17, 2013
  10. Junio C HamanoJul 17, 2013
  11. Stefan BellerJul 17, 2013
  12. 0/6 Deprecating "diff-files -q"Junio C Hamano, Jul 18, 2013
  13. 1/6 diff: pass the whole diff_options to diffcore_apply_filter()Junio C Hamano, Jul 18, 2013
  14. 2/6 diff: factor out match_filter()Junio C Hamano, Jul 18, 2013
  15. 3/6 diff: preparse --diff-filter string argumentJunio C Hamano, Jul 18, 2013
  16. 4/6 diff: reject unknown change class given to --diff-filterJunio C Hamano, Jul 18, 2013
  17. 5/6 diff: allow lowercase letter to specify what change class to excludeJunio C Hamano, Jul 18, 2013
  18. 6/6 diff: deprecate -q option to diff-filesJunio C Hamano, Jul 18, 2013
  19. 7/6 diff: remove "diff-files -q" at Git 2.0 version boundaryJunio C Hamano, Jul 19, 2013
  20. Jonathan NiederJul 19, 2013
  21. Junio C HamanoJul 19, 2013
  22. Jonathan NiederJul 19, 2013
  23. 4/4 diff.c: Do not initialize a variable, which gets reassigned anyway.Stefan Beller, Jul 14, 2013
  24. Jonathan NiederJul 14, 2013
  25. Jonathan NiederJul 14, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.