Hi, TL;DR: "git push --mirror" does not in fact push all refs, despite documentation stating it does. It ONLY pushes refs in refs/heads/ and refs/tags/. I ran into this while preparing to migrate Gentoo's primary Git server (which uses Gitolite). Gitolite ships a post-receive hook, "save-push-signatures" [1] that save Push certificates into refs/push-certs. Gitolite mirroring invokes 'git push --mirror' to mirror from the primary location to replicas. I was surprised to find, on the new server presently configured as replica, but intended to take over as the primary, that the refs/push-certs was missing on every single repo. ``` # git push -h |grep -e mirror -e all --all push all refs --mirror mirror all refs ``` git-push(1): ``` --mirror Instead of naming each ref to push, specifies that all refs under refs/ (which includes but is not limited to refs/heads/, refs/remotes/, and refs/tags/) be mirrored to the remote repository. ... ``` git --version: 2.32.0 Attached I also include the trace ref & trace packet output as well that shows it on a sample repo. ``` GIT_TRACE_REFS=/tmp/trace-refs \ GIT_TRACE_PACKET=/tmp/trace-packet \ git push --mirror $REPLICA:$REPO ``` The repo's gitconfig does not contain any remotes, because that's the way gitolite is built. [1] https://github.com/sitaramc/gitolite/blob/master/contrib/hooks/repo-specific/save-push-signatures -- Robin Hugh Johnson Gentoo Linux: Dev, Infra Lead, Foundation Treasurer E-Mail : robbat2@gentoo.org GnuPG FP : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85 GnuPG FP : 7D0B3CEB E9B85B1F 825BCECF EE05E6F6 A48F6136