hg clone прерывает сообщение о том, что не может найти .hg / store / lock в хранилище - PullRequest
1 голос
/ 26 февраля 2011

Я создал хранилище на удаленной машине, используя:

    hg init

    hg add

    hg commit

Хранилище создано.

Я клонировал репозиторий на локальном компьютере без сообщений об ошибках; Кажется, что файлы там

Теперь я пытаюсь сделать клон клона (как рабочую копию), используя:

    hg clone "path to original clone"

Возвращает:

целевой каталог: "имя хранилища"

abort: Нет такого файла или каталога: «путь к оригинальному клону» /. Hg / store / lock

Что я делаю не так?

Спасибо

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Какая файловая система используется на разделе, где находится основной репозиторий?

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

Однако есть некоторые проблемы с некоторыми файловыми системами FUSE, обычно SSHFS с активированной опцией follow_symlinks. FUSE сообщает, что он знает о символических ссылках, но поскольку SSHFS следует по символической ссылке, а файл не существует, «состояние» ссылки помечается как неизвестное, поэтому Mercurial считает, что хранилище неправильно заблокировано, и прерывает операцию.

Я вижу, что вы используете Cygwin, так что, возможно, это та же проблема с инструментами, разработанными для UNIX в файловой системе Windows. Странно, но мои коллеги очень хорошо используют Mercurial через Cygwin.

Я не знаю, так ли это для вас, но я потерял почти полдня на эту проблему. Может быть, эти ответы могут помочь некоторым людям в будущем.

1 голос
/ 27 февраля 2011

Пожалуйста, вставьте фактическую команду, которая терпит неудачу, и вывод, включая фактический путь к клону, который вы клонируете. Когда вы делаете клон, используйте --debug и --traceback тоже.

В качестве обходного пути вы всегда можете попробовать hg init newclone с последующим hg pull -R newclone pathtooriginalclone, что фактически эквивалентно, за исключением того, что по возможности не используются локальные жесткие ссылки.

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