Efficient large scale repo/storage migrations
With the general availability of Gitaly Cluster, we have customers interested in migrating from vanilla-Gitaly to clustered-Gitaly. Sometimes a customer wants to move entire storages at once with minimal downtime. Migrations can sometimes be slow due the dependence on using git-fetch to replicate changes. Complicating this, some large and odd shaped repos may take longer to replicate due to git-related performance issues. To speed up migrations, we may want to pre-seed the destination with a snapshot of the original storage (or a subset of repos). This way, only the changes since the snapshot need to be replicated.