Git diff присутствует в символических ссылках в Windows, но не в Mac в файловой системе FAT.

У меня есть внешний диск FAT, на котором я храню свои репозитории GIT и использую эти репозитории как на Mac, так и на Windows. Поскольку у FAT нет разрешений, когда я копировал файлы с локального диска на внешний FAT-диск, у меня были git diff из-за изменения режима файла. Я решил это с помощью опции git , используя это:

git config core.fileMode false

Теперь на Mac у меня нет git diff, т.е. git diff чистый. Но когда я захожу в Windows и выполняю git diff, я вижу это:

введите здесь описание изображения

Я помню, что у меня были проблемы при связывании моих проектов с использованием Xcode 6 после обновления Xcode. Мои фреймворки, те самые фреймворки, которые вы видите на изображении выше, где в Xcode, но не были распознаны и связаны. Поэтому я удалил их, повторно добавил и решил проблему. Я думаю, это причина, по которой у меня есть diff. Вот пример дифа:

Было: введите здесь описание изображения

Стать: введите здесь описание изображения

Почему я не вижу эту разницу на Mac? Почему у меня есть различия в файлах фреймворка iOS и что означает различие (XSym, номер [0022], хэш-код)?

РЕДАКТИРОВАТЬ: Кажется, это как-то связано с символическими ссылками на FAT: http://www.tucuxi.org/os-x-vfat/, но я не знаю, как решить мою проблему одновременного использования одного и того же репозитория в Windows и Mac.


person Narek    schedule 21.11.2014    source источник
comment
Кажется, это может помочь: stackoverflow.com/questions/5917249/git-symlinks -в окнах   -  person Narek    schedule 21.11.2014


Ответы (1)


Вот объяснение проблемы: http://www.tucuxi.org/os-x-vfat/ В двух словах, FAT не понимает символических ссылок, и, следовательно, когда вы копируете символическую ссылку в FAT, она пытается имитировать, добавляя упоминание о содержании, которое является разницей на изображениях выше.

Вот решение: https://www.kernel.org/pub/software/scm/git/docs/git-config.html Другими словами, git core.symlinks config должен быть установлен false, чтобы символические ссылки проверялись как небольшие простые файлы, содержащие текст ссылки:

git config core.symlinks false

И в результате diff на Mac тоже будет присутствовать. И, кстати, разница в файлах фреймворков делает их неработающими в Xcode.

Итак, в целом, используя GIT на FAT, я бы рекомендовал установить эти глобальные настройки для GIT:

git config --global core.fileMode false
git config --global core.symlink false
git config --global core.ignorecase true

Проверьте, правильно ли он установлен, используя:

git config -l

Он показывает все унаследованные значения: системные, глобальные и локальные.

Важный! Даже если вы используете git config --global core.symlink false, вам все равно следует проверить разные репозитории для OSX и Windows, чтобы опция вступила в силу. Итак, в основном у вас должно быть 2 репозитория на внешнем жестком диске - один для OSX и один для Windows. В противном случае вы все равно получите diffs.

person Narek    schedule 21.11.2014