Использование одного и того же репозитория git между windows и linux приводит к дополнительной фиксации - PullRequest
1 голос
/ 21 июня 2020

У меня есть раздел NTFS, содержащий мои данные, совместно используемые двумя операционными системами (у меня двойная загрузка Linux и Windows). У меня есть репозиторий, над которым я работал некоторое время, используя Linux, и все было хорошо, пока я не попытался открыть репозиторий на windows. Я заметил, что у меня были неустановленные изменения, хотя я ничего не менял. Если я зафиксирую их и открою репозиторий из Linux, у меня будет еще один набор неустановленных изменений, и цикл продолжится. При фиксации изменений, которые появляются, это список mode change [some #] => [some other #] [file name] для всех отслеживаемых файлов.

Я видел, как некоторые люди говорили, что совместное использование репозитория между разными операционными системами - не лучшая идея, но не объясняя почему. Может ли кто-нибудь объяснить, почему это происходит, и можно ли решить эту проблему (если возможно, без использования другого репозитория).

PS. да, я использую Github для размещения репо, если это будет иметь значение.

1 Ответ

3 голосов
/ 21 июня 2020

Git хранит информацию о файлах в рабочем дереве в индексе. Часть данных, хранящихся в индексе, - это информация об устройстве и индексном дескрипторе каждого файла. Эта информация различается в зависимости от операционной системы, поскольку в разных операционных системах устройства нумеруются по-разному. Следовательно, совместное использование рабочего дерева между операционными системами, по крайней мере, приведет к тому, что все файлы потребуется перечитать при выполнении git status или некоторых других команд после переключения операционных систем.

Кроме того, Linux сохраняет права на исполняемые файлы в файловой системе, а Windows - нет. Поскольку NTFS представляет собой файловую систему Windows, она не поддерживает разрешения для исполняемых файлов. Linux может только предполагать, что каждый файл является исполняемым, и поэтому ваши коммиты приводят к тому, что многие файлы, которые не могут быть успешно выполнены, помечаются как исполняемые. Вот почему кажется, что разрешения меняются.

В общем, NTFS не является хорошей файловой системой для Linux. Лучше использовать файловую систему UDF, которая будет работать как на Linux, так и на Windows, но может сохранять и использовать разрешения POSIX.

Как упоминалось ранее, у вас возникнут проблемы с совместным использованием рабочего дерево в операционных системах. UDF может сделать его функциональным и избежать текущих проблем с переключением разрешений, но это все еще не рекомендуемое решение, и вам следует его избегать.

...