Is Git's commit atomic?
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.
- Working on GitLab/GitHub/BitBucket feature branch
- How to rename a remote branch in Git so that to have a proper history tree
- Git asks for commit message when pulling from other branch
- Found a swap file by the name “.git/.MERGE_MSG.swp”
- Using Subversion and Visual SourceSafe in parallel?
- Differentiated access rights in distributed VCS's
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.
One Solution collect form web for “Is Git's commit atomic?”
Yes commits are atomic. It is not possible to reject part of a commit.
The update hook may be called multiple times during a single push (not
commit) if multiple branches are being pushed at the same time. This allows
accepting updates to some branches while rejecting updates to others, but each
accepted update will still point to a complete commit from the pushing