Может ли 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 при оформлении заказа. Он помечен как "сделано, может быть лучше", поэтому вряд ли изменится в ближайшее время.