On Thu, Feb 25, 2021 at 06:36:54AM +0100, Patrick Steinhardt wrote: > > Hmm, I would have thought that the branch switch would trigger the hooks > > because they're updating HEAD. I wonder if that is a bug (or lack of > > feature :) ) in the transaction hooks, or something Patrick did > > intentionally. > > It was done semi-intentionally, or at least with the knowledge that > symrefs aren't covered. This is mostly because they're not covered by > the reference transaction mechanism itself. Ah, right, I forgot about that. That might be something that we'd want to fix if anybody wanted to use the transaction hooks to track the complete state of refs. At GitHub, our repository replication does track symbolic ref updates, but we handle it outside of Git. Our normal ref updates use a few custom bits of code similar to your transaction hooks in order to implement a 3-phase commit. But our symref updates don't; they just take a lock, run git-symbolic-ref on each, and then vote on the result. This is slower and less robust, but symbolic ref updates are relatively rare, so it hasn't been a big deal. -Peff