aboutsummaryrefslogtreecommitdiff
path: root/refs
diff options
context:
space:
mode:
authorMichael Haggerty <mhagger@alum.mit.edu>2017-11-05 09:42:04 +0100
committerJunio C Hamano <gitster@pobox.com>2017-11-06 10:31:07 +0900
commit62c72d1fd0aa39429011b76ff5b1953a561e6581 (patch)
treee7a0ec4069b96dd8d02033319b3117944d3fdd29 /refs
parenta9bbbcec0d863d719dd4ae39fc2242b32c2008e7 (diff)
downloadgit-62c72d1fd0aa39429011b76ff5b1953a561e6581.tar.gz
git-62c72d1fd0aa39429011b76ff5b1953a561e6581.tar.xz
ref_transaction_add_update(): remove a check
We want to make `REF_ISPRUNING` internal to the files backend. For this to be possible, `ref_transaction_add_update()` mustn't know about it. So move the check that `REF_ISPRUNING` is only used with `REF_NODEREF` from this function to `files_transaction_prepare()`. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs')
-rw-r--r--refs/files-backend.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/refs/files-backend.c b/refs/files-backend.c
index ba72d28b1..a47771e4d 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -2518,13 +2518,18 @@ static int files_transaction_prepare(struct ref_store *ref_store,
* transaction. (If we end up splitting up any updates using
* split_symref_update() or split_head_update(), those
* functions will check that the new updates don't have the
- * same refname as any existing ones.)
+ * same refname as any existing ones.) Also fail if any of the
+ * updates use REF_ISPRUNING without REF_NODEREF.
*/
for (i = 0; i < transaction->nr; i++) {
struct ref_update *update = transaction->updates[i];
struct string_list_item *item =
string_list_append(&affected_refnames, update->refname);
+ if ((update->flags & REF_ISPRUNING) &&
+ !(update->flags & REF_NODEREF))
+ BUG("REF_ISPRUNING set without REF_NODEREF");
+
/*
* We store a pointer to update in item->util, but at
* the moment we never use the value of this field