Git Symlinks в Windows - PullRequest
       40

Git Symlinks в Windows

221 голосов
/ 07 мая 2011

Наши разработчики используют сочетание ОС Windows и Unix.Поэтому символические ссылки, созданные на машинах Unix, становятся проблемой для разработчиков Windows.В windows (msysgit) символическая ссылка преобразуется в текстовый файл с путем к файлу, на который она указывает.Вместо этого я хотел бы преобразовать символическую ссылку в фактическую символическую ссылку Windows.

( updated ) решение, которое у меня есть, это:

  • Написатьскрипт post-checkout, который будет рекурсивно искать текстовые файлы "symlink".
  • Заменить их символьной ссылкой Windows (используя mklink) с тем же именем и расширением, что и у фиктивной "символической ссылки"
  • Игнорировать символическую ссылку Windowsдобавив запись в .git / info / exclude

Я не реализовал это, но я считаю, что это надежный подход к этой проблеме.

Вопросы:

  1. Какие, если таковые имеются, недостатки у этого подхода?
  2. Является ли этот сценарий после оформления заказа даже реализуемым?то есть я могу рекурсивно узнать, какие фиктивные файлы "symlink" создает git?
  3. Кто-нибудь уже работал с таким скриптом?

Ответы [ 12 ]

2 голосов
/ 16 июня 2015

Я все время использую ссылки sym между моим корневым каталогом документов и каталогом git repo. Мне нравится держать их отдельно. На окнах я использую опцию mklink / j. Соединение, кажется, позволяет git вести себя нормально:

>mklink /j <location(path) of link> <source of link>

например:

>mklink /j c:\gitRepos\Posts C:\Bitnami\wamp\apache2\htdocs\Posts

1 голос
/ 29 сентября 2017

Один простой трюк, который мы используем, - это просто вызвать git add --all дважды подряд.

Например, наши скриптовые вызовы для Windows 7:

$ git add --all
$ git add --all

Первое добавление обрабатывает ссылку как текст и добавляет папки для удаления.

Второе добавление корректно проходит по ссылке и отменяет удаление, восстанавливая файлы.

Это менее элегантно, чем некоторые другие предлагаемые решения, но это простое исправление для некоторых из наших устаревших сред, в которые добавлены символические ссылки.

...