Является ли svn-rebase-and-push от нескольких клиентов в одном и том же Git-репо уязвимым для условий гонки, если оба клиента пытаются одновременно выполнить svn-rebase и push?
Вот дополнительная информация: я настраиваю размещенное на GitHub зеркало проекта SVN.Чтобы выполнить зеркалирование, я буду запускать эту задачу cron каждые несколько минут (для этой статьи ):
git svn rebase
git.exe push origin master
В целях резервирования мне бы хотелось, чтобы другой сервер работал с таким жеcron работа.Но сломается ли это перед лицом таких условий гонки?
- Оба сервера перезагружаются практически одновременно.Один из них
git push
внесет изменения, а другой попытается отправить те же самые изменения. - Один сервер перезагружается, затем происходит повторная проверка SVN, затем другой сервер перезагружается и быстро запускает новую проверку, затем первый,более медленный сервер пытается отодвинуть одну регистрацию позади.
Желательно, если более поздняя операция просто возвращает no-op (также известный как «Все актуально»).Это также нормально, если конфликтующее нажатие завершается неудачно, при условии, что его задание cron запускается снова с неконфликтующим tmie, тогда оно будет работать нормально.
Что не в порядке, если локальное хранилище на любом серверепопасть в неудачное состояние, где требуется ручное вмешательство.Если такой сбой возможен, как я должен изменить приведенные выше команды для их самовосстановления?