Skip to content

Commit e578d03

Browse files
rscharfegitster
authored andcommitted
add: don't write objects with --dry-run
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: [email protected] Signed-off-by: René Scharfe <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 225bc32 commit e578d03

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

read-cache.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -738,7 +738,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
738738
int intent_only = flags & ADD_CACHE_INTENT;
739739
int add_option = (ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE|
740740
(intent_only ? ADD_CACHE_NEW_ONLY : 0));
741-
int hash_flags = HASH_WRITE_OBJECT;
741+
unsigned hash_flags = pretend ? 0 : HASH_WRITE_OBJECT;
742742
struct object_id oid;
743743

744744
if (flags & ADD_CACHE_RENORMALIZE)

t/t2200-add-update.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,15 @@ test_expect_success 'add -n -u should not add but just report' '
129129
echo "remove '\''top'\''"
130130
) >expect &&
131131
before=$(git ls-files -s check top) &&
132+
git count-objects -v >objects_before &&
132133
echo changed >>check &&
133134
rm -f top &&
134135
git add -n -u >actual &&
135136
after=$(git ls-files -s check top) &&
137+
git count-objects -v >objects_after &&
136138
137139
test "$before" = "$after" &&
140+
test_cmp objects_before objects_after &&
138141
test_cmp expect actual
139142
140143
'

0 commit comments

Comments
 (0)