Может ли Mercurial создать свой собственный символьный формат ссылок из Windows?

Я знаю, что Mercurial не поддерживает символические ссылки в репозиториях в Windows; Я могу с этим смириться, хотя реализация с использованием символических ссылок NTFS была бы полезна для тех, кто может включить привилегию на своих окнах Windows для не-администраторов.

Что мне интересно, так это то, как Mercurial обрабатывает фактические ссылки из репозитория Unix, когда репозиторий виден на компьютере с Windows. Если я обновляюсь из репозитория с символической ссылкой на моем компьютере для разработки Windows, я вижу, что ссылка преобразуется в реальный файл с целевым объектом ссылки в виде текста.

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

Так. Как пометить файл, созданный в Windows, как символическую ссылку? Ясно, что Mercurial может вставить такую ​​символическую ссылку в файловую систему Unix, но я не знаю, как пометить ее как таковую, не создавая сначала ссылку под Unix.

Есть ли флаг, который можно установить?

1 ответ

Боюсь, что в Windows нет обходного пути. Вы можете написать расширение, которое позволит вам установить бит символической ссылки для файла в Windows. Это расширение, вероятно, придется переопределить dirstate.flagfunc, которая является функцией, используемой при запросе "флагов" (бит выполнения и символической ссылки) для файла.

См. Также выпуск 1825, где рассказывается о том, как заставить Mercurial создавать символические ссылки Windows при оформлении заказа. Он помечен как "сделано, может быть лучше", поэтому вряд ли изменится в ближайшее время.

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