Отслеживание жестких или символических ссылок с mercurial на Windows

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

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

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

Ответ 1

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

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