Отслеживание жестких или символических ссылок с помощью Mercurial в Windows

В довольно большом проекте я хотел бы разместить один и тот же файл (или папку) в разных местах. Когда он изменяется в одном месте, изменения должны распространяться. В Subversion я мог использовать внешние возможности для достижения такого поведения.

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

Это специфичное для Windows поведение Mercurial или он вообще не может отслеживать ссылки? Есть ли другой способ отследить файл, который доступен из разных мест в Mercurial?

1 ответ

Решение

Mercurial может отслеживать символические ссылки, но они выглядят странно при проверке в Windows. Что происходит, так это то, что Mercurial создает файл с целью ссылки в качестве содержимого файла. К сожалению, нет поддержки создания реальных символических ссылок в системах Windows, которые их поддерживают, таких как Windows Vista. В результате вы не можете использовать символические ссылки в репозитории, который должен быть переносимым между обеими системами. Пожалуйста, смотрите обсуждение в Issue1825 для получения дополнительной информации об этой функции.

Ближайший матч для svn:externals Ртутные субпозитории. В зависимости от того, как вы использовали svn:externals, subrepos может или не может быть то, что вы хотите. Пожалуйста, смотрите мой ответ на другой вопрос о subrepos для некоторых советов. Я написал часть кода для подпунктов, и я не думаю, что монтирование подпункта несколько раз в одном и том же главном репозитории звучит как рецепт путаницы. Но, возможно, вы можете заставить его работать - просто имейте в виду, что подпункты - сложная часть Mercurial.

Другие вопросы по тегам