From: Shawn O. Pearce Date: Mon, 26 May 2008 02:17:57 +0000 (-0400) Subject: Don't diff empty tree on branch creation in paranoid update hook X-Git-Tag: v1.5.6-rc1~50 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=97561fff3263add59ec25207a0c5a635b28ce9b9;p=git.git Don't diff empty tree on branch creation in paranoid update hook Listing all files in a branch during branch creation is silly; the user's file-level ACLs probably don't mean anything at this point. We now treat the base case of 0{40} as an empty diff, as this happens only when the user is creating the branch and there are file level ACLs that diff against the old value of the branch. Signed-off-by: Shawn O. Pearce Signed-off-by: Junio C Hamano --- diff --git a/contrib/hooks/update-paranoid b/contrib/hooks/update-paranoid index 068fa3708..6e0d97c89 100644 --- a/contrib/hooks/update-paranoid +++ b/contrib/hooks/update-paranoid @@ -225,14 +225,12 @@ sub load_diff ($) { local $/ = "\0"; my %this_diff; if ($base =~ /^0{40}$/) { - open(T,'-|','git','ls-tree', - '-r','--name-only','-z', - $new) or return undef; - while () { - chop; - $this_diff{$_} = 'A'; - } - close T or return undef; + # Don't load the diff at all; we are making the + # branch and have no base to compare to in this + # case. A file level ACL makes no sense in this + # context. Having an empty diff will allow the + # branch creation. + # } else { open(T,'-|','git','diff-tree', '-r','--name-status','-z',