Add projectSharded URL selection per remote
Extend `remote.NAME.urlDistributionStrategy` with a `projectSharded`
value. Like `roundRobin` it picks a single URL per push, but derives it
from the project name, so a project always replicates to the same URL
instead of rotating on every event.
Replication tasks are coalesced per (project, URI), so rotating URLs
leaves successive updates to one project as separate tasks racing
against the shared NFS backend. Pinning collapses them into one task.
The URL is chosen by hashing the project name over the sorted candidate
list, so every host agrees regardless of config order.
Change-Id: I91118a47e0e7da64995a9a444d4baf56ec8b8386
7 files changed