Расширение доли Mercurial: как отказаться? - PullRequest
3 голосов
/ 16 августа 2010

Я использую расширение общего доступа Mercurial в Mercurial 1.6.4, поставляемом с TortoiseHG 1.1.1 для Windows (32-разрядная версия XP).

Больше информации на: https://www.mercurial -scm.org / вики / ShareExtension

Я использую расширение общего доступа, работает хорошо, в обоих направлениях. Основной репо находится на локальном жестком диске, общий репо находится в сетевой папке (Samba в AIX).

Теперь я хочу удалить ссылку общего доступа (которая должна быть известна с обеих сторон, поскольку они обновляют друг друга). Как я могу это сделать? Я не могу найти что-либо в Интернете ... слова "поделиться", "не делиться", не очень googlable.

Любая помощь приветствуется, С уважением, Tijs

1 Ответ

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

Я думаю, вы неправильно поняли это расширение. Расширение общего доступа (очень редко используемое!) Предназначено для случаев, когда вам нужно несколько рабочих каталогов, указывающих на один и тот же базовый репозиторий, - вместо гораздо более нормального отношения один к одному между репозиториями и рабочими каталогов.

Там нет unhare, потому что нет двунаправленной ссылки.

Вот объяснение:

Вы создаете новый репо, используя hg init или hg clone:

repoA
\-- .hg (repoA's repository)

Если вы создали другой клон, у вас будет другой рабочий каталог с другим хранилищем внутри. Это то, что делается в 99,9% случаев.

repoA  (the one you already had)
\-- .hg (repoA's repository)

repoB  (the new clone)
\-- .hg (repo B's repository)
    \-- hgrc (config file with a [paths] default=../repoA)

Однако, если вы используете hg share, вы получите что-то вроде этого:

repoA  (the one you already had)
\-- .hg (repoA's repository)

repoB  (the new shared repo)
\-- .hg (a symlink-like pointer to ../repoA/.hg)

Таким образом, он выглядит двунаправленным только потому, что у них точно такой же репо под одеялом. Если они находятся на разных компьютерах / томах, то repoB не может использоваться, если репо не доступно - что противоположно тому, что DVC должен делать для вас.

Итак, в ответ вы «отмените связь», удалив repoB. Если в repoB есть незафиксированные файлы, которые вы не хотите фиксировать в repoA, вы можете сделать что-то вроде этого:

hg clone -U repoA newRepoB  # create a clone with no working dir
cp -a repoB/* newRepoB    # excludes all files including .hg (and other .* files)

TL; DR: не использовать share; это почти никогда не правильный выбор.

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