It seems to me like adding Git to relays wouldn't be that difficult actually. Git has a replication protocol built in. The tricky part is making sure people don't push conflicts to two branches at once. The naive solution is a lock but that fails with full synchronisation. There would need to be an error state that arises when relays hosting gits discover their versions are different, probably the easiest would be they agree to set their HEAD at the most recent common tree and the relay would have to send an error, could be done via DM, that there has been a merge conflict that has prevented a branch from advancing.
