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

[PATCH] rerere forget: deprecate invocation without pathspec

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Mar 1, 2011, 13:21 UTC
Message-ID
<4D6CF2C1.9070805@viscovery.net>
From: Johannes Sixt <j6t@kdbg.org>

rerere forget is a destructive command. When invoked without a path, it operates on the current directory, potentially deleting many recorded conflict resolutions.

To make the command safer, a path must be specified as of git 1.8.0. Until then, give users time to write 'git rerere forget .' if they really mean the entire current directory.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
 I assume that 'rerere forget' is a rarely used command, we can afford
 to change its behavior without a lot of fuzz. Let's not dive into the
 discussion whether it should operate on the current directory or the
 entire repository; rather, require users to be explicit. After all,
 it is destructive!
 BTW, notice that documentation for 'remaining' is missing.
 -- Hannes
 Documentation/git-rerere.txt |    4 ++--
 builtin/rerere.c             |    7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-rerere.txt b/Documentation/git-rerere.txt
index db99d47..484fdd5 100644
--- a/Documentation/git-rerere.txt
+++ b/Documentation/git-rerere.txt
@@ -7,7 +7,7 @@ git-rerere - Reuse recorded resolution of conflicted merges
 
 SYNOPSIS
 --------
-'git rerere' ['clear'|'forget' [<pathspec>]|'diff'|'status'|'gc']
+'git rerere' ['clear'|'forget' <pathspec>|'diff'|'status'|'gc']
 
 DESCRIPTION
 -----------
@@ -43,7 +43,7 @@ will automatically invoke this command.
 'forget' <pathspec>::
 
 This resets the conflict resolutions which rerere has recorded for the current
-conflict in <pathspec>.  The <pathspec> is optional.
+conflict in <pathspec>.
 
 'diff'::
 
diff --git a/builtin/rerere.c b/builtin/rerere.c
index 67cbfeb..8235885 100644
--- a/builtin/rerere.c
+++ b/builtin/rerere.c
@@ -8,7 +8,7 @@
 #include "xdiff-interface.h"
 
 static const char * const rerere_usage[] = {
-	"git rerere [clear | status | remaining | diff | gc]",
+	"git rerere [clear | forget path... | status | remaining | diff | gc]",
 	NULL,
 };
 
@@ -136,7 +136,10 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
 		return rerere(flags);
 
 	if (!strcmp(argv[0], "forget")) {
-		const char **pathspec = get_pathspec(prefix, argv + 1);
+		const char **pathspec;
+		if (argc < 2)
+			warning("'git rerere forget' without paths is deprecated");
+		pathspec = get_pathspec(prefix, argv + 1);
 		return rerere_forget(pathspec);
 	}
 
-- 
1.7.4.rc3.76.gfb457d
Message 1 of 1 in “rerere forget: deprecate invocation without pathspec”
  1. rerere forget: deprecate invocation without pathspecJohannes Sixt, Mar 1, 2011

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.