Cygwin Symlinks .lnk не работают после git clone - PullRequest
1 голос
/ 13 мая 2019

Я создал git-репо с символической ссылкой внутри.
Этот символ создан с помощью cygwin.

cd ./bar && ln -s ../foo.md foo.md

Cygwin создает файл foo.md.lnk.
Пока все в порядке.

foo.md -> ../foo.md

Если я перенесу репо в GitLab и клонирую его где-нибудь еще
символическая ссылка - это просто текстовый файл.

foo.md.lnk*

Проблема заключается в том, что: https://www.cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks

Все вышеперечисленные четыре типа символических ссылок распознаются и используются в качестве символических ссылок при любых обстоятельствах.Однако, если в типе символической ссылки обычного файла по умолчанию отсутствует бит DOS SYSTEM или в файле ярлыков отсутствует атрибут DOS READONLY, они не распознаются как символические ссылки.

И git не поддерживает этот атрибут READONLY.
https://stackoverflow.com/a/27554044/5190206

1 Ответ

0 голосов
/ 13 мая 2019

Создайте крюк после оформления заказа под .git/hooks/post-checkout

#! /bin/sh
# post-checkout hook to make all lnk files read-only
find -type f -iname "*.lnk" -exec chmod -w {} \;
...