Teach the update-paranoid to look at file differences
authorShawn O. Pearce <spearce@spearce.org>
Thu, 9 Aug 2007 06:38:12 +0000 (02:38 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 10 Aug 2007 08:00:16 +0000 (01:00 -0700)
commitd47eed3272311acf16f136c49b0bb341c9a6e39c
tree9b7484f57909e1cac47e464b67296ec243252110
parentb767c792fa202539cfb9bba36f46c62bcbf7c987
Teach the update-paranoid to look at file differences

In some applications of the update hook a user may be allowed to
modify a branch, but only if the file level difference is also an
allowed change.  This is the commonly requested feature of allowing
users to modify only certain files.

A new repository.*.allow syntax permits granting the three basic
file level operations:

  A: file is added relative to the other tree
  M: file exists in both trees, but its SHA-1 or mode differs
  D: file is removed relative to the other tree

on a per-branch and path-name basis.  The user must also have a
branch level allow line already granting them access to create,
rewind or update (CRU) that branch before the hook will consult
any file level rules.

In order for a branch change to succeed _all_ files that differ
relative to some base (by default the old value of this branch,
but it can also be any valid tree-ish) must be allowed by file
level allow rules.  A push is rejected if any diff exists that
is not covered by at least one allow rule.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/hooks/update-paranoid