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 <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Shawn O. Pearce 2008-05-25 22:17:57 -04:00 committed by Junio C Hamano
parent 48ded91674
commit 97561fff32

View file

@ -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 (<T>) {
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',