Безопасно ли игнорировать ошибки клонирования hg из репозитория с защитой от записи? - PullRequest
2 голосов
/ 07 октября 2011

У меня есть репозиторий Mercurial на USB-накопителе с защитой от записи, с которого я хочу клонировать рабочую станцию. Я думал, что это будет «односторонняя» операция, но это не так: после установки флэш-диска в рабочую станцию ​​и попытки hg clone E:\my_repo я получаю сообщение об ошибке, указывающее, что Mercurial пытается выполнить запись в источник репо. (Это в Windows XP со следующими сведениями об ошибке: «hg.exe - Ошибка защиты от записи / Диск не может быть записан, поскольку он защищен от записи. Пожалуйста, удалите защиту от записи с тома на диске E:.»)

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

Мои вопросы: (1) почему Mercurial должен писать в источник при клонировании? И (2) действительно ли безопасно просто продолжать и игнорировать все, что Mercurial не может записать в источник?

1 Ответ

5 голосов
/ 07 октября 2011

Существует четыре способа клонов Mercurial:

  • hardlink: используется для клонов на том же томе, где поддерживается
  • copy: используется для клонов из файловой системы в файловую систему
  • pull: используется для клонирования с удаленных машин
  • stream: используется для клонирования в высокоскоростной локальной сети (см. - без сжатия)

Все эти методы, кроме pull, пытаются заблокировать исходный репозиторий, чтобы избежать любых коммитов в середине клона, которые могут его испортить. Поскольку это не опасно для вас, игнорировать ошибку безопасно (хотя это и не факт, что Mercurial будет доволен неудачей блокировки).

Кроме того, вы можете указать --pull, чтобы сделать клон, если блокировка не нужна.

...