threads / patch / 29115

patchtag deletions not rejected with receive.denyDeletes= true

Subject: [PATCH] tag deletions not rejected with receive.denyDeletes= true

## tl;dr

2 messages between Dec 9, 2011 and Dec 9, 2011. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Jerome DE VIVIE· Dec 9, 2011, 08:51 UTC · lore
Hello,
I have try to deny tag deletion over push using denyDeletes parameter:

git config --system receive.denyDeletes true git daemon --reuseaddr --base-path=.. --export-all --verbose --enable=receive-pack

I can push tag deletions despite what the internet says (http://progit.org/book/ch7-1.html#receivedenydeletes). I don't know if it is a bug. Could you have a look, pls ? Thank you

BR Jérôme

Signed-off-by: Jérôme de Vivie <j.edevivie@prometil.com>
---
 builtin/receive-pack.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to builtin/receive-pack.c +1 −1
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 7ec68a1..bf91042 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -432,7 +432,7 @@ static const char *update(struct command *cmd)
 	}
 
 	if (!is_null_sha1(old_sha1) && is_null_sha1(new_sha1)) {
-		if (deny_deletes && !prefixcmp(name, "refs/heads/")) {
+		if (deny_deletes && (!prefixcmp(name, "refs/heads/") || !prefixcmp(name, "refs/tags/"))) {
 			rp_error("denying ref deletion for %s", name);
 			return "deletion prohibited";
 		}
-- 
1.7.6.msysgit.0
Junio C Hamano· Dec 9, 2011, 19:15 UTC · re: Jerome DE VIVIE · lore

Re: [PATCH] tag deletions not rejected with receive.denyDeletes= true

Jerome DE VIVIE <j.devivie@prometil.com> writes:
Show 8 quoted lines
> Hello,
>
> I have try to deny tag deletion over push using denyDeletes parameter:
>
> git config --system receive.denyDeletes true
> git daemon --reuseaddr --base-path=.. --export-all --verbose --enable=receive-pack
>
> I can push tag deletions despite what the internet says (http://progit.org/book/ch7-1.html#receivedenydeletes). I don't know if it is a bug. Could you have a look, pls ? Thank you

The code seems to be written in such a way that it _explicitly_ wants to limit the effect of the configuration only to branches. The change was introduced by a240de1 (Introduce receive.denyDeletes, 2008-11-01) and the motivation was explained as:

    Introduce receive.denyDeletes
    
    Occasionally, it may be useful to prevent branches from getting deleted from
    a centralized repository, particularly when no administrative access to the
    server is available to undo it via reflog. It also makes
    receive.denyNonFastForwards more useful if it is used for access control
    since it prevents force-updating by deleting and re-creating a ref.
So I would have to say your "the internet" is wrong.

Our documentation can also use some updates, as it dates to the days back when we more liberally used "refs" and "branches" interchangeably.

← back to recent threads