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

[PATCH 6/6] diff: deprecate -q option to diff-files

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 18, 2013, 00:30 UTC
Message-ID
<1374107406-14357-7-git-send-email-gitster@pobox.com>
In-Reply-To
<1374107406-14357-1-git-send-email-gitster@pobox.com>

This reimplements the ancient "-q" option to "git diff-files" that was inherited from "show-diff -q" in terms of "--diff-filter=d", and issue a warning against the use of the former.

Incidentally this also tentatively fix "git diff --no-index" to honor "-q" and hide deletions; the use will get the same warning.

We should remove the support for "-q" in Git 2.0.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 diff-lib.c      | 8 +++-----
 diff-no-index.c | 7 +++++--
 diff.c          | 8 ++++++++
 diff.h          | 2 ++
 4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/diff-lib.c b/diff-lib.c
index f35de0f..4634b29 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -86,10 +86,12 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
 {
 	int entries, i;
 	int diff_unmerged_stage = revs->max_count;
-	int silent_on_removed = option & DIFF_SILENT_ON_REMOVED;
 	unsigned ce_option = ((option & DIFF_RACY_IS_MODIFIED)
 			      ? CE_MATCH_RACY_IS_DIRTY : 0);
 
+	if (option & DIFF_SILENT_ON_REMOVED)
+		handle_deprecated_show_diff_q(&revs->diffopt);
+
 	diff_set_mnemonic_prefix(&revs->diffopt, "i/", "w/");
 
 	if (diff_unmerged_stage < 0)
@@ -136,8 +138,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
 					perror(ce->name);
 					continue;
 				}
-				if (silent_on_removed)
-					continue;
 				wt_mode = 0;
 			}
 			dpath->mode = wt_mode;
@@ -203,8 +203,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
 				perror(ce->name);
 				continue;
 			}
-			if (silent_on_removed)
-				continue;
 			diff_addremove(&revs->diffopt, '-', ce->ce_mode,
 				       ce->sha1, !is_null_sha1(ce->sha1),
 				       ce->name, 0);
diff --git a/diff-no-index.c b/diff-no-index.c
index 74da659..a788a5f 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -187,7 +187,7 @@ void diff_no_index(struct rev_info *revs,
 {
 	int i, prefixlen;
 	int no_index = 0;
-	unsigned options = 0;
+	unsigned deprecated_show_diff_q_option_used = 0;
 	const char *paths[2];
 
 	/* Were we asked to do --no-index explicitly? */
@@ -225,7 +225,7 @@ void diff_no_index(struct rev_info *revs,
 		if (!strcmp(argv[i], "--no-index"))
 			i++;
 		else if (!strcmp(argv[i], "-q")) {
-			options |= DIFF_SILENT_ON_REMOVED;
+			deprecated_show_diff_q_option_used = 1;
 			i++;
 		}
 		else if (!strcmp(argv[i], "--"))
@@ -260,6 +260,9 @@ void diff_no_index(struct rev_info *revs,
 	revs->max_count = -2;
 	diff_setup_done(&revs->diffopt);
 
+	if (deprecated_show_diff_q_option_used)
+		handle_deprecated_show_diff_q(&revs->diffopt);
+
 	setup_diff_pager(&revs->diffopt);
 	DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS);
 
diff --git a/diff.c b/diff.c
index 2d0b5e3..78819ba 100644
--- a/diff.c
+++ b/diff.c
@@ -3570,6 +3570,14 @@ static int parse_diff_filter_opt(const char *optarg, struct diff_options *opt)
 	return 0;
 }
 
+/* Used only by "diff-files" and "diff --no-index" */
+void handle_deprecated_show_diff_q(struct diff_options *opt)
+{
+	warning("'diff -q' and 'diff-files -q' are deprecated.");
+	warning("Use 'diff --diff-filter=d' instead to ignore deleted filepairs.");
+	parse_diff_filter_opt("d", opt);
+}
+
 int diff_opt_parse(struct diff_options *options, const char **av, int ac)
 {
 	const char *arg = av[0];
diff --git a/diff.h b/diff.h
index a367207..5237d63 100644
--- a/diff.h
+++ b/diff.h
@@ -341,6 +341,8 @@ extern int parse_rename_score(const char **cp_p);
 
 extern long parse_algorithm_value(const char *value);
 
+extern void handle_deprecated_show_diff_q(struct diff_options *);
+
 extern int print_stat_summary(FILE *fp, int files,
 			      int insertions, int deletions);
 extern void setup_diff_pager(struct diff_options *);
-- 
1.8.3.3-962-gf04df43
Previous: Junio C HamanoNext: Junio C Hamano
Message 18 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.