HEAD modification is logged when the branch pointed by HEAD is updated
If HEAD points to refs/heads/main
and refs/heads/main
is updated, Git's reference-transaction
will print out an update for both refs/heads/main
and HEAD
:
b49c78f40d1c226335cfc3d1520953855c11fb2a 83d71d3eb5bce5568d148afa21184cff13958510 refs/heads/master
b49c78f40d1c226335cfc3d1520953855c11fb2a 83d71d3eb5bce5568d148afa21184cff13958510 HEAD
HEAD was previously ignored in the reference-transaction
hook. This was used to avoid staging this no-op operation in the transaction. The line in the reference-transaction doesn't indicate that HEAD was actually modified, only that the branch it points to was modified. We recently started capturing this in !6855 (8caf4ebb). As we're not filtering out the no-op lines, we are now always staging an update to the HEAD file when the branch it points to is updated.
We should fix this so HEAD is only logged when it is modified, and add the missing test coverage that would have caught this in tests.