Я думаю, что это https://github.com/git-for-windows/git/issues/1646.
Чтобы быть более ясным: ваш вопрос, кажется, является проявлением проблемы XY : экземпляр Git, используемый для клонирования / извлечения проекта, кажется, неправильно обрабатывает символические ссылки на каталоги - создавая символические ссылки, указывающие на файлы вместо. Так что, похоже, это ошибка в GfW, поэтому вместо того, чтобы ее выкопать, вы придумали обходной путь и спросили, как заставить его работать.
Итак, я бы лучше попытался помочь сопровождающему GfW и тому, кто сообщит # 1646, решить проблему. Если вам нужно решение с временным интервалом, я бы сказал, что правильным способом было бы пойти другим путем и написать несколько вызовов для git ls-tree
, чтобы выяснить, что такое символические ссылки каталога (у них будет специальный набор битов разрешения;
Вы можете начать здесь ).
Таким образом, вы будете проходить все объекты дерева коммита HEAD
рекурсивно,
выяснить, что символические ссылки, указывающие на каталоги, а затем
исправьте соответствующие записи в рабочем дереве, удалив их
и воссоздание с mklink /D
или чем-то еще создает правильный вид
символическая.
К сожалению, я боюсь пытаться написать это с использованием возможностей lame
из cmd.exe
-s сценариев было бы бесполезным упражнением.
Я бы взял более «настоящий» язык программирования (например, PowerShell,
и - поскольку вы, вероятно, магазин Windows, - даже .NET будет в порядке).