An update hook can reject parts of a commit and allow others.
update() in receive_pack.c runs in a loop which then calls the update hook possibly multiple times during a commit. Each time the update hook is called, it can return failure, seemingly allowing some refs to be updated and some not updated if rejected.
Does Git's feature of an update hook allowing possibly part of a commit to succeed and some fail mean that Git's commit is not atomic?
Or what am I missing here? Thanks.