diff --git a/refs.c b/refs.c index ea2b9f84f8..41aec6505d 100644 --- a/refs.c +++ b/refs.c @@ -921,6 +921,8 @@ int ref_transaction_update(struct ref_transaction *transaction, return -1; } + flags &= REF_TRANSACTION_UPDATE_ALLOWED_FLAGS; + flags |= (new_sha1 ? REF_HAVE_NEW : 0) | (old_sha1 ? REF_HAVE_OLD : 0); ref_transaction_add_update(transaction, refname, flags, diff --git a/refs.h b/refs.h index 6daa78eb50..4d75c207e1 100644 --- a/refs.h +++ b/refs.h @@ -354,6 +354,14 @@ int refs_pack_refs(struct ref_store *refs, unsigned int flags); #define REF_NODEREF 0x01 #define REF_FORCE_CREATE_REFLOG 0x40 +/* + * Flags that can be passed in to ref_transaction_update + */ +#define REF_TRANSACTION_UPDATE_ALLOWED_FLAGS \ + REF_ISPRUNING | \ + REF_FORCE_CREATE_REFLOG | \ + REF_NODEREF + /* * Setup reflog before using. Fill in err and return -1 on failure. */