René Scharfe <l.s.r@xxxxxx> writes: > 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@xxxxxxxxxxxxxxx > Signed-off-by: René Scharfe <l.s.r@xxxxxx> > --- > 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. > 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