git ошибка клона в Windows с символическими ссылками - PullRequest
0 голосов
/ 08 января 2020

Предупреждение "Я получаю": следующие пути столкнулись (например, пути с учетом регистра в файловой системе без учета регистра), и только один из одной и той же группы столкновения находится в рабочем дереве "ошибка при использовании git клон:

git clone -c core.symlinks=true ssh://root@11.22.33.44/etc c/Dev/GIT/mysite-etckeeper/
Cloning into 'c/Dev/GIT/mysite-etckeeper'...
remote: Counting objects: 1400, done.
remote: Compressing objects: 100% (1202/1202), done.
remote: Total 1400 (delta 195), reused 0 (delta 0)
Receiving objects: 100% (1400/1400), 3.71 MiB | 276.00 KiB/s, done.
Resolving deltas: 100% (195/195), done.
Checking out files: 100% (1154/1154), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'HOSTNAME'
  'hostname'


/etc # ls -la HOSTNAME
lrwxrwxrwx   1 root root         8 Mar 29  2017 HOSTNAME -> hostname

/etc # ls -la hostname
-rw-r--r--   1 root root        18 Dec 21  2016 hostname

Как я могу решить эту проблему? Эта проблема символической ссылки также вызывает другие проблемы.

ПРИМЕР: Вот пример репозитория для воспроизведения ошибки: https://github.com/klorinczi/test_dupe_filename

Выполните это:

$ git clone -c core.symlinks=true https://github.com/klorinczi/test_dupe_filename 
Cloning into 'test_dupe_filename_example'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 9 (delta 0), reused 9 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'HOSTNAME'
  'hostname'

1 Ответ

1 голос
/ 08 января 2020

Вы находитесь в системе с файловой системой без учета регистра, и хранилище содержит два файла, которые отличаются только регистром (HOSTNAME и hostname). Невозможно представить оба этих файла в системе одновременно, поэтому извлекается только один файл. (Обратите внимание, что это не имеет никакого отношения к использованию символических ссылок.)

У вас есть несколько вариантов:

  • Вы можете попросить сопровождающего этого хранилища удалить один из дубликатов файлов. , переименовав его;
  • Если вы используете Windows 10, вы можете сделать Git хранилище чувствительным к регистру после того, как создали его с помощью git init, а затем использовать git fetch в существующем репозитории для извлечения данных вместо клонирования;
  • Вы можете продолжать жить с этим, как оно есть; или
  • Вы можете использовать другую операционную систему, такую ​​как Linux, возможно, в виртуальной машине.

Если вы хотите выбрать второй вариант, вы должны сделать что-то вроде следующее:

git init mysite-etckeeper
# Steps to make mysite-etckeeper case-sensitive from link above.
cd mysite-etckeeper
git remote add origin ssh://root@11.22.33.44/etc
git fetch origin
git reset --hard origin/master
...