Re: [PATCH] add: don't write objects with --dry-run
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 12, 2021, 20:15 UTC
- Message-ID
- <xmqqr1cq2e5o.fsf@gitster.g>
- In-Reply-To
- <0131d21f-dabd-3da5-34bd-a570e990f9e0@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 12 quoted lines
> When the option --dry-run/-n is given, "git add" doesn't change the > index, but still writes out new object files. Only hash the latter > without writing instead to make the run as dry as possible. > > Use this opportunity to also make the hash_flags variable unsigned, > to match the index_path() parameter it is used as. > > Reported-by: git.mexon@spamgourmet.com > Signed-off-by: René Scharfe <l.s.r@web.de> > --- > Am I missing something? Do we sometimes rely on the written objects > within the "git add --dry-run" command?
Good question. I do not think of anything offhand, but this obvious "omission" makes me suspect that we may be forgetting something.
Thanks.
Show 39 quoted lines
> read-cache.c | 2 +- > t/t2200-add-update.sh | 3 +++ > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/read-cache.c b/read-cache.c > index a78b88a41b..7fcc948077 100644 > --- a/read-cache.c > +++ b/read-cache.c > @@ -738,7 +738,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st, > int intent_only = flags & ADD_CACHE_INTENT; > int add_option = (ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE| > (intent_only ? ADD_CACHE_NEW_ONLY : 0)); > - int hash_flags = HASH_WRITE_OBJECT; > + unsigned hash_flags = pretend ? 0 : HASH_WRITE_OBJECT; > struct object_id oid; > > if (flags & ADD_CACHE_RENORMALIZE) > diff --git a/t/t2200-add-update.sh b/t/t2200-add-update.sh > index 45ca35d60a..94c4cb0672 100755 > --- a/t/t2200-add-update.sh > +++ b/t/t2200-add-update.sh > @@ -129,12 +129,15 @@ test_expect_success 'add -n -u should not add but just report' ' > echo "remove '\''top'\''" > ) >expect && > before=$(git ls-files -s check top) && > + git count-objects -v >objects_before && > echo changed >>check && > rm -f top && > git add -n -u >actual && > after=$(git ls-files -s check top) && > + git count-objects -v >objects_after && > > test "$before" = "$after" && > + test_cmp objects_before objects_after && > test_cmp expect actual > > ' > -- > 2.33.0