Повреждение хранилища Hg при использовании общего сетевого каталога Windows - PullRequest
3 голосов
/ 03 мая 2019

Я надеюсь, что смогу получить некоторую помощь, поскольку SO UX лучше, чем список рассылки Mercurial.

Я с удовольствием пользуюсь Mercurial дома годами. Я также использую его с Bitbucket Cloud для пары более серьезных (но все же хобби) проектов.

В прошлом году я переключил свою команду на работе с SVN (хостинг компании) на Hg (хостинг самостоятельно, с центральным репо в сетевом расположении). Мы все в Windows. С тех пор у нас постоянно возникают проблемы с серьезным повреждением центрального хранилища, которое может быть решено только с помощью резервного копирования, например ::10000

% hg verify --verbose
repository uses revlog format 1
checking changesets
checking manifests
manifest@92: unknown parent 1 ef0f96d78ab6 of ef0f96d78ab6
manifest@92: reading delta ef0f96d78ab6: integrity check failed on 
 00manifest.i:88
manifest@93: unknown parent 1 e336adb3580b of e336adb3580b
manifest@93: reading delta e336adb3580b: integrity check failed on 00manifest.i:89
manifest@94: reading delta 7243aebd542b: unknown compression type '\x08'
manifest@95: reading delta 899e4507ca01: unpack requires a string argument of length 12
manifest@96: reading delta 12d4d930da4f: Manifest had an entry with a zero-length filename.
...

Некоторые люди говорят, , что мы не должны использовать общий сетевой ресурс для центрального хранилища из-за проблем с блокировкой. Другие объясняют, что Mercurial не использует эти блокировки, и сетевые ресурсы должны работать нормально, если только нет проблем с файловой системой.

Учитывая последнее, мне интересно, смогу ли я как-то отладить нашу установку, не попросив компанию предоставить сервер для hg. Я не знаю много о конфигурации, которую мы используем, но вот что я вижу. Каталог доступен через сетевой путь Windows: \\domain.com\path\path\our-directory. Внутри мы создали каталог с именем root, в котором находится .hg. В .hgrc путь соответственно

[пути]
default = \\ domain.com \ path \ path \ our-directory \ root

Резервное копирование нашего сетевого каталога (компанией). Версия Hg 4.9.

1 Ответ

0 голосов
/ 03 мая 2019

У меня был похожий опыт с похожей настройкой.

Первое, на что стоит обратить внимание, - это то, что я думал, что у старых версий HG действительно были некоторые проблемы при запуске через сетевые папки Windows, поэтому убедитесь, что ваша версия актуальна.(Это было много лет назад, IIRC, поэтому вряд ли это будет основной причиной вашей нынешней проблемы).

Во-вторых, в моем случае эти проблемы усугублялись запуском HG из в виртуальной машине .Вместо этого я теперь запускаю экземпляр [hg serve][1] на ПК, который не виртуализирован, и поражаю его различными клиентами HG.Больше никаких проблем.

Оказалось, что если соединение между компьютером, на котором запущен hg serve, и файловым сервером было более надежным, чем то, откуда я запускал hg в качестве клиента, это позволило избежать этой проблемы.Очевидно, что HTTP-соединение, которое hg serve использует с клиентом, само по себе более надежно.

Я не могу сказать, что это окончательное решение, потому что я так и не нашел основную причину.Но это, похоже, позволило избежать дальнейшего разрушения в течение некоторого времени.

Обратите внимание, что hg serve встроен прямо в стандартный инструмент командной строки hg, вы можете легко запустить его из любого места, и он не имеетработать на том же сервере, где хранится физический репозиторий.Так что в моем случае я использую это довольно случайно;(очевидно) вам, возможно, придется координировать свои действия с ИТ-специалистами, если вам нужно что-то более надежное.

...