Если толчок Билла заканчивается первым, толчок Алисы завершится неудачей, потому что перед обновлением ссылок git проверяет, что ссылка для репо остается такой же, как и раньше. При таком раскладе этого не будет. Алиса в конечном итоге увидит сообщение об ошибке и должна решить проблемы. То же самое касается Билла в обратном случае. Таким образом, в своем пост-получении вы должны убедиться, что исходные и новые ссылки на репо теперь разные. Если нет, то вообще не продвигайтесь к новому репо, чтобы сохранить работу.
Я все еще вижу проблему в вашем сценарии, хотя это связано с переходом в облако. Вы можете иметь ОДНУ ЖЕ проблему с хуком, толкающим два действительных ссылки до облачного местоположения. За исключением того, что теперь вы не будете знать, нужно ли вам нажимать на репо в скрипте, если он терпит неудачу в первый раз, потому что вы не будете знать, был ли сбойный реф более старым или более новым, чем тот, который был вставлен ... особенно, если они не были простыми быстрые форварды, которые могут происходить время от времени. Если вы просто нажали кнопку, независимо от того, есть ли у этого шанс, облако будет иметь СТАРОЙ реф, пока другой хук не подтолкнет что-то еще позже. В случае с Алисой он бы слил изменения из апстрима или любого другого решения, но сценарий, вероятно, не должен обладать такой способностью принимать решения.
В хуке вы могли бы использовать магию сценариев для текущего репо, чтобы определить временные метки и тому подобное, и нажимать только при наличии ускоренной перемотки вперед, но это кажется грязным и, скорее всего, слияние необходимо в любом случае. Я думаю, что лучшее решение, чем использование перехвата после получения, - это использовать cron или запланированную задачу каждые пять минут (или сколько угодно часто), которая просто запускает git pull в основной ветке вашего удаленного зеркала. Если у вас нет доступа к этому репо, вы можете вместо этого выполнить принудительное продвижение из репозитория локальной сети с помощью задания cron. Я думаю, что это безопаснее, чем крюк и менее сложно. Это гарантирует, что ветвь в облаке резервного копирования всегда будет в правильном месте каждые несколько минут и не рискует выдвинуть старую ссылку и никогда не получит самую новую, пока не получится еще один толчок от пользователя, как это делает ловушка.