Preserve target endpoint across HEAD discovery when redirects are followed
Commit

DiscoverHEAD reuses targetConn, which Pusher captured after the receive-pack info-refs settled on the resolved push host under FollowInfoRefsRedirect. If the target's own upload-pack info-refs redirects to a different host (a common read-replica setup), RequestInfoRefs would clobber conn.Endpoint.Host/Scheme to the read host, and subsequent push POSTs would land on a host that 404s receive-pack.
Fix: temporarily toggle conn.FollowInfoRefsRedirect off during the DiscoverHEAD call. http.Client still follows the 30x internally to read the advertisement; we just suppress the post-call conn.Endpoint mutation, leaving Pusher's endpoint intact.
Regression test wraps the real receive-pack server with a handler that 307s GETs of /info/refs?service=git-upload-pack to a decoy host that 404s POSTs. Without the fix, sync fails with "decoy refuses POSTs"; with it, push lands on the real receive-pack host.
Refs #45.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com Entire-Checkpoint: 7e51a96fa59a