Document receive.denyNonFastforwards

[jc: with a fix to config handling in t5400 test, which took
 annoyingly long to diagnose.]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Johannes Schindelin 2006-09-21 02:10:30 +02:00 committed by Junio C Hamano
parent 9edd7e4652
commit 199a92186b
4 changed files with 27 additions and 0 deletions

View File

@ -267,3 +267,10 @@ whatchanged.difftree::
imap:: imap::
The configuration variables in the 'imap' section are described The configuration variables in the 'imap' section are described
in gitlink:git-imap-send[1]. in gitlink:git-imap-send[1].

receive.denyNonFastforwads::
If set to true, git-receive-pack will deny a ref update which is
not a fast forward. Use this to prevent such an update via a push,
even if that push is forced. This configuration variable is
set when initializing a shared repository.


View File

@ -48,6 +48,10 @@ is given:
- 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository - 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository
readable by all users. readable by all users.


By default, the configuration flag receive.denyNonFastforward is enabled
in shared repositories, so that you cannot force a non fast-forwarding push
into it.

-- --





View File

@ -73,6 +73,8 @@ packed and is served via a dumb transport.
There are other real-world examples of using update and There are other real-world examples of using update and
post-update hooks found in the Documentation/howto directory. post-update hooks found in the Documentation/howto directory.


git-receive-pack honours the receive.denyNonFastforwards flag, which
tells it if updates to a ref should be denied if they are not fast-forwards.


OPTIONS OPTIONS
------- -------

View File

@ -64,4 +64,18 @@ test_expect_success \
cmp victim/.git/refs/heads/master .git/refs/heads/master cmp victim/.git/refs/heads/master .git/refs/heads/master
' '


unset GIT_CONFIG GIT_CONFIG_LOCAL
HOME=`pwd`/no-such-directory
export HOME ;# this way we force the victim/.git/config to be used.

test_expect_success \
'pushing with --force should be denied with denyNonFastforwards' '
cd victim &&
git-repo-config receive.denyNonFastforwards true &&
cd .. &&
git-update-ref refs/heads/master master^ &&
git-send-pack --force ./victim/.git/ master &&
! diff -u .git/refs/heads/master victim/.git/refs/heads/master
'

test_done test_done