Отказ от ответственности : Мой опыт связан с git
, а не hg
, но, насколько я понимаю, концепции в равной степени применимы к обеим системам.
Преимущество резервного копирования в удаленное хранилище заключается в том, что если локальное хранилище повреждено (возможно, из-за проблемы с базовой файловой системой), это повреждение не передается в резервную копию, если только файлы в рабочем дереве сами испорчены.
Например, некоторые объекты в хранилище, возможно, те, к которым редко обращаются, потому что вы их не изменяете, могут быть повреждены. Могут пройти месяцы, прежде чем вы снова будете использовать один из этих файлов, и месяцы, прежде чем вы заметите (хотя я думаю, что выполнение запуска сборки мусора, например, git gc
, обнаружит повреждение).
Таким образом, если вы выполняете резервное копирование, нажимая коммиты, вы создаете независимую версию этих объектов и используете контрольные суммы (то есть хэш коммитов) для проверки передачи любых новых файлов. Принимая во внимание, что если вы выполняете резервное копирование в провайдера резервного копирования, вы дублируете фактические объекты в хранилище, в каком бы состоянии они ни находились, и дублируете любые изменения в этих файлах, включая их повреждение.
Обычно провайдеры резервных копий дают откат ( spideroak , кажется, особенно хорош для этого), но вам все равно придется просмотреть множество версий, чтобы выяснить, когда произошло повреждение; также у некоторых провайдеров период отката ограничен (особенно для бесплатных аккаунтов).