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

[RFC/PATCH 1/2] update-index: add --clear option

From
Jeff King <peff@peff.net>
Date
Apr 16, 2012, 16:02 UTC
Message-ID
<20120416160232.GA1350@sigill.intra.peff.net>
In-Reply-To
<20120416152737.GB14724@sigill.intra.peff.net>

This just discards existing entries from the index, which can be useful if you are rewriting all entries with "--index-info" or similar.

Signed-off-by: Jeff King <peff@peff.net>
---
I tried to make something like:
  git update-index --from-scratch --index-info

work by avoiding reading all entries in the first place. However, update-index actually processes its arguments sequentially, so we _must_ read the index before we start processing arguments. But because it's sequential, a "clear" operation makes sense, since you clear, then add new entries.

 Documentation/git-update-index.txt |    3 +++
 builtin/update-index.c             |   10 ++++++++++
 2 files changed, 13 insertions(+)
diff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt
index a3081f4..47f0ae6 100644
--- a/Documentation/git-update-index.txt
+++ b/Documentation/git-update-index.txt
@@ -71,6 +71,9 @@ OPTIONS
 --cacheinfo <mode> <object> <path>::
 	Directly insert the specified info into the index.
 
+--clear::
+	Discard all existing entries from the index.
+
 --index-info::
         Read index information from stdin.
 
diff --git a/builtin/update-index.c b/builtin/update-index.c
index a6a23fa..559dfae 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -645,6 +645,13 @@ static int cacheinfo_callback(struct parse_opt_ctx_t *ctx,
 	return 0;
 }
 
+static int clear_callback(const struct option *opt,
+			  const char *arg, int unset)
+{
+	discard_cache();
+	return 0;
+}
+
 static int stdin_cacheinfo_callback(struct parse_opt_ctx_t *ctx,
 			      const struct option *opt, int unset)
 {
@@ -774,6 +781,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 			"add entries from standard input to the index",
 			PARSE_OPT_NONEG | PARSE_OPT_NOARG,
 			(parse_opt_cb *) stdin_cacheinfo_callback},
+		{OPTION_CALLBACK, 0, "clear", NULL, NULL,
+			"drop all index entries", PARSE_OPT_NONEG | PARSE_OPT_NOARG,
+			clear_callback},
 		{OPTION_LOWLEVEL_CALLBACK, 0, "unresolve", &has_errors, NULL,
 			"repopulate stages #2 and #3 for the listed paths",
 			PARSE_OPT_NONEG | PARSE_OPT_NOARG,
-- 
1.7.9.6.8.g992e5
Previous: Jeff KingNext: Christopher Tiwald
Message 4 of 9 in “Filter-branch's "move tree to subdirectory" example fails with BSD sed?”
  1. Christopher TiwaldApr 14, 2012
  2. Johannes SixtApr 14, 2012
  3. Jeff KingApr 16, 2012
  4. 1/2 update-index: add --clear optionJeff King, Apr 16, 2012
  5. Christopher TiwaldApr 16, 2012
  6. Christopher TiwaldApr 17, 2012
  7. 2/2 docs/filter-branch: clean up newsubdir exampleJeff King, Apr 16, 2012
  8. Junio C HamanoApr 16, 2012
  9. Jeff KingApr 16, 2012

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.