Я гуглил некоторое время теперь, но я был удивлен не мочь найти ответ на это, довольно простое, вопрос.
С подвижными 1.4, когда я клонирую репозиторий на клиенте окон, символьные ссылки появляются как файл, содержащий путь к исходному файлу.
Я не использую символьные ссылки экстенсивно, но я действительно использую их для общей обработки lib (libpng.so-> libpng.so.2-> libpng.so.2.43.0, например).
Поле окон здесь только для тестирования, что означает, что я был бы очень счастлив, если символьные ссылки, где фактические копии исходного файла, это позволит мне скомпилировать.
Я видел http://markmail.org/message/7d353ucvivhphvvk, который является в основном тем же вопросом, но без любого реального ответа.
Ну, обычный ответ - не стоит боли, по крайней мере, на уровне ВКС. Конечно, предлагаемое решение сработает, но как насчет редактирования копий файлов сymlinked: стоит ли их тоже обновлять? Что произойдет, если вы отредактируете исходный текст и скопируете файл по-другому? И так далее.
Тем не менее, никто не мешает вам реализовать расширение или простой (обновленный) крюк, сканирующий манифест и перезаписывающий ссылки с исходным файлом. Это заставит сим-ссылки выглядеть изменёнными, но в вашей тестовой установке вас, вероятно, это не волнует.
Вот код крюка (symcopy. py):
def symcopy(ui, repo, hooktype, parent1, **kwargs):
ctx = repo[parent1]
for f in ctx:
if 'l' in ctx.flags(f):
# overwrite symlink with original file content
print 'overwriting', f
fsrc = ctx[f].data()
repo.wwrite(f, ctx[fsrc].data(), '')
Затем в repo hgrc поместите что-то вроде:
[hooks]
update = python:c:/path/to/symcopy.py:symcopy
И протестируйте с запуском:
$ hg up -C somerev
Вы действительно хотите --clean при обновлении, так как крюк пометит симлинки как измененные и вы не хотите запускать слияние.
Возможно fsrc
нужно немного почистить, но вы поняли это.