Насколько безопасен «мерзавец» с ненадежным соединением? - PullRequest
19 голосов
/ 08 августа 2010

Я использую git для контроля версий и помещаю свои изменения в хранилище на сервере в Интернете для безопасного хранения.

Я могу сделать небольшое количество кодирования на ноутбуке в поезде, у которого есть подключение к интернету через Wi-Fi, но это не , что надежно и иногда выпадает или становится медленным. Мой вопрос: что произойдет, если мое соединение будет потеряно во время «git push»? Я получу поврежденный или наполовину обновленный репозиторий git? И если да, то насколько сложно его восстановить?

Ответы [ 2 ]

16 голосов
/ 08 августа 2010

Git не повредит и не «наполовину обновит» ваш Git-репозиторий только из-за сбоя или медленного соединения. Это очень надежно, и я все еще чувствую себя комфортно, используя его даже в самых тяжелых условиях.

Фактическая функция push реализуется по существу в два этапа (в случае ускоренного перемещения вперед, что всегда должно быть в случае):

  • загрузка всех объектов, доступных из текущей главы филиала и недоступных из удаленной головки филиала
  • обновить заголовок удаленной ветви, чтобы он указывал на последний коммит

Первая операция идемпотентна, поэтому, если она по какой-либо причине провалится, вы можете просто запустить ее снова, чтобы получить все в курсе. Вторая операция является атомарной и происходит только после загрузки всех новых объектов.

5 голосов
/ 08 августа 2010

По словам Линуса, git настолько надежно защищен в области данных, что даже обнаружит ошибку памяти в системе, в которой он работает. Он просто не будет применять пакеты, поступающие на сервер с неверной контрольной суммой, поэтому вам не о чем беспокоиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...