gitproto: classify create-side CAS races (already exists) as ErrTargetRefMoved
Commit

entire-server rejects git-sync's create command (old = zero hash) for a ref that already exists with "already exists" — the create-side twin of the update-side "remote ref has changed" CAS rejection. git-sync only plans a create for a ref it found absent at plan time, so the server finding it present at push time is an unambiguous benign race: a concurrent sync of the same repo created the ref first.
Add "already exists" to concurrentMoveMarkers so the rejection satisfies errors.Is(err, ErrTargetRefMoved), matching the update-side handling. Embedders that key redelivery/alerting off the sentinel (e.g. mirror-pipeline's worker) previously misclassified create races as hard sync failures.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com