git/list[1] front-page[2] threads[3] people[4] search[5] about
 

denyNonFastForwards & co fail outside refs/<heads,tags>

From
HFHallvard B Furuseth <h.b.furuseth@usit.uio.no>
Date
Mar 29, 2011, 11:54 UTC
Message-ID
<hbf.20110329j1zo@bombur.uio.no>

config options receive.<denyNonFastForward, denyDeletes> do not work in nonstandard ref namespaces. I stumbled over it in refs/notes/, but the problem is general. Or if it this intentional, it is the git-config(1) doc of these options which needs fixing.

Git version 1.7.4.2.
To reproduce:

######################################################################## #!/bin/sh rm -rf hi ho

git --version
# Create initial repos
git init -q hi
(cd hi
    git config receive.denyDeletes         true
    git config receive.denyNonFastForwards true
    echo foo > foo && git add foo && git commit -q -m first foo)
git clone -q hi ho
# Make them diverge, except the checked-out branch
for r in hi ho; do
    (cd $r
	echo $r >> foo && git commit -q -m next foo
	git update-ref refs/outside/test HEAD
	git checkout -q -b br HEAD^
	# Shut up a bit
	git config advice.pushNonFastForward false
	git gc --quiet
	# For ssh push
	git update-server-info)
done

cd ho # Optional; makes no difference #git config remote.origin.pushurl localhost:`pwd`/../hi

# Can push test despite 'deny's, fails as expeceted for master:
for b in refs/outside/test refs/heads/master; do
    git push -f origin $b:$b
    git push -f origin   :$b
    echo ""
done
# Just to check: Pushing the master normal way fails the same way.
git push -f origin

######################################################################## Output:

git version 1.7.4.2
To /tmp/hi
 + 1bb5836...5bf63f8 refs/outside/test -> refs/outside/test (forced update)
To /tmp/hi
 - [deleted]         refs/outside/test
remote: error: denying non-fast-forward refs/heads/master (you should pull first)        
To /tmp/hi
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '/tmp/hi'
remote: error: denying ref deletion for refs/heads/master        
To /tmp/hi
 ! [remote rejected] master (deletion prohibited)
error: failed to push some refs to '/tmp/hi'
remote: error: denying non-fast-forward refs/heads/master (you should pull first)        
To /tmp/hi
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '/tmp/hi'
-- 
Hallvard
Next: Junio C Hamano
Message 1 of 2 in “denyNonFastForwards & co fail outside refs/<heads,tags>”
  1. Hallvard B FurusethMar 29, 2011
  2. Junio C HamanoMar 29, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.