[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