diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-05-15 08:51:10 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-05-15 07:30:52 -0700 |
| commit | 8e4f5c2dc26e8e88c8c4784f133d2b35a771d2ac (patch) | |
| tree | c17cf925061fe0ad3e5b9280c6f6e450a978abbb /refs.c | |
| parent | ref-filter: properly distinuish pseudo and root refs (diff) | |
| download | git-8e4f5c2dc26e8e88c8c4784f133d2b35a771d2ac.tar.gz git-8e4f5c2dc26e8e88c8c4784f133d2b35a771d2ac.zip | |
refs: refuse to write pseudorefs
Pseudorefs are not stored in the ref database as by definition, they
carry additional metadata that essentially makes them not a ref. As
such, writing pseudorefs via the ref backend does not make any sense
whatsoever as the ref backend wouldn't know how exactly to store the
data.
Restrict writing pseudorefs via the ref backend.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
| -rw-r--r-- | refs.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -1263,6 +1263,13 @@ int ref_transaction_update(struct ref_transaction *transaction, return -1; } + if (!(flags & REF_SKIP_REFNAME_VERIFICATION) && + is_pseudo_ref(refname)) { + strbuf_addf(err, _("refusing to update pseudoref '%s'"), + refname); + return -1; + } + if (flags & ~REF_TRANSACTION_UPDATE_ALLOWED_FLAGS) BUG("illegal flags 0x%x passed to ref_transaction_update()", flags); |
