Почему эта символическая ссылка создается при инициализации репозитория? - PullRequest
1 голос
/ 09 января 2020

Я разрабатываю инструмент, который использует libgit2sharp. В настоящее время для его разработки используется LINQPad 6. net core 3.1.

Во время тестирования я заметил, что в пустом хранилище создается пустая ссылка на каталог (в данном случае _git2_a09040). Я инициализировал. Последнее, что я вспомнил, работая с libgit2sharp, такая ссылка не создается.

enter image description here

Он указывает на каталог «testing», который не существует и не существует обычно это файл, который можно увидеть в каталоге git. Libgit2sharp просто перенаправляет вызов функции git_repository_init_ext() в libgit2, поэтому я думаю, что это происходит из libgit2. Возможно, какой-то старый тестовый артефакт попал в сборку?

Что это за символическая ссылка и почему она добавляется сюда?

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

  • Win10 Pro x64 1909
  • Do tNet Core x64 3.1. 100
  • LINQPad 6 x64 6.6.1 (бета)
  • LibGit2Sharp 0.26.2 (nuget)
  • LibGit2Sharp.NativeBinaries 2.0.306 (nuget dep)

1 Ответ

2 голосов
/ 09 января 2020

Когда инициализируется репозиторий Git, выполняется проверка, поддерживает ли файловая система, в которой создается репозиторий, символические ссылки. Это делается путем создания символической ссылки и проверки работоспособности. Если это не работает, core.symlinks устанавливается на false.

При построении для Windows эта проверка выполняется только в том случае, если core.symlinks равно true, что предполагает, что этот параметр может быть включен .

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

...