• P
    receive-pack: don't pass non-existent refs to post-{receive,update} hooks · 160b81ed
    Pang Yan Han 提交于
    When a push specifies deletion of non-existent refs, the post post-receive and
    post-update hooks receive them as input/arguments.
    
    For instance, for the following push, where refs/heads/nonexistent is a ref
    which does not exist on the remote side:
    
    	git push origin :refs/heads/nonexistent
    
    the post-receive hook receives from standard input:
    
    	<null-sha1> SP <null-sha1> SP refs/heads/nonexistent
    
    and the post-update hook receives as arguments:
    
    	refs/heads/nonexistent
    
    which does not make sense since it is a no-op.
    
    Teach receive-pack not to pass non-existent refs to the post-receive and
    post-update hooks. If the push only attempts to delete non-existent refs,
    these hooks are not even called.
    
    The update and pre-receive hooks are still notified about attempted
    deletion of non-existent refs to give them a chance to inspect the
    situation and act on it.
    
    [jc: mild fix-ups to avoid introducing an extra list; also added fixes to
    some tests]
    Signed-off-by: NPang Yan Han <pangyanhan@gmail.com>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    160b81ed
refs.h 4.8 KB