refs: introduce REF_SKIP_OID_VERIFICATION flag

This lets the ref-store test helper write non-existent or unparsable objects
into the ref storage.

Use this to make t1006 and t3800 independent of the files storage backend.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Han-Wen Nienhuys
2021-12-07 13:38:17 +00:00
committed by Junio C Hamano
parent 0464d0a134
commit e9706a188f
5 changed files with 43 additions and 27 deletions

8
refs.h
View File

@ -615,12 +615,18 @@ struct ref_transaction *ref_transaction_begin(struct strbuf *err);
*/
#define REF_FORCE_CREATE_REFLOG (1 << 1)
/*
* Blindly write an object_id. This is useful for testing data corruption
* scenarios.
*/
#define REF_SKIP_OID_VERIFICATION (1 << 10)
/*
* Bitmask of all of the flags that are allowed to be passed in to
* ref_transaction_update() and friends:
*/
#define REF_TRANSACTION_UPDATE_ALLOWED_FLAGS \
(REF_NO_DEREF | REF_FORCE_CREATE_REFLOG)
(REF_NO_DEREF | REF_FORCE_CREATE_REFLOG | REF_SKIP_OID_VERIFICATION)
/*
* Add a reference update to transaction. `new_oid` is the value that