Почему `git clone` переопределяет глобальные ссылки core.symlink в Windows? - PullRequest
0 голосов
/ 28 октября 2019

Я обнаружил, что git clone устанавливает локальное core.symlinks значение как false по умолчанию, даже если я установил core.symlinks как true.

> git config --list --show-origin
file:"C:\\ProgramData/Git/config"       core.symlinks=true
file:"C:\\ProgramData/Git/config"       core.autocrlf=input
file:"C:\\ProgramData/Git/config"       core.fscache=true
file:"C:\\ProgramData/Git/config"       color.diff=auto
file:"C:\\ProgramData/Git/config"       color.status=auto
file:"C:\\ProgramData/Git/config"       color.branch=auto
file:"C:\\ProgramData/Git/config"       color.interactive=true
file:"C:\\ProgramData/Git/config"       help.format=html
file:"C:\\ProgramData/Git/config"       rebase.autosquash=true
-- snip --

> cat .git/config
[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = https://github.com/saschanaz/eslint-plugin-import
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

Почему это происходит?

Ответы [ 2 ]

1 голос
/ 28 октября 2019

core.symlinks, к сожалению, перегружен в Git для Windows.

Если у вас установлено core.symlinks на true при создании хранилища (будь то с помощью git init или git clone), тогда git попытается определить, поддерживаются ли символические ссылки в создаваемом вами рабочем каталоге, и если это так, он затем установит для core.symlinks хранилища значение true.

Еслиони не поддерживаются (поскольку, например, вы не включили режим разработчика), тогда для параметра конфигурации core.symlinks в хранилище будет установлено значение false.

Итак, первый вариантслужит механизмом, который вы можете указать, если вы хотите символические ссылки. Второй действует как кэш-память о том, поддерживаются ли символические ссылки на платформе, поэтому нет необходимости обнаруживать это во время каждой операции (так же, как core.ignorecase).

0 голосов
/ 28 октября 2019

Это потому, что я не включил Режим разработчика и, следовательно, git не мог создавать символические ссылки без прав администратора. Включение этого позволяет будущим клонам получать правильные символические ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...