为什么在初始化存储库时创建此符号链接?

Why is this symlink created when repository is initialized?

我正在开发一个利用 libgit2sharp 的工具。目前在 .net core 3.1 上使用 LINQPad 6 运行 来开发它。

在测试时,我注意到在我初始化的裸存储库中创建了一个名称奇怪的目录 symlink(在本例中为 _git2_a09040)。最后我记得使用 libgit2sharp,没有创建这样的 link。

它指向一个 "testing" 目录,该目录不存在,通常不是希望在 git 目录中看到的文件。 Libgit2sharp 只是将调用转发给 libgit2 的 git_repository_init_ext() 函数,所以我认为这是来自 libgit2。可能是一些旧的测试工件进入了构建?

这个符号是什么link,为什么要添加到这里?

创建这个对我来说并不重要,我不认为它会对我的项目产生负面影响,只是想知道为什么。

初始化 Git 存储库时,将执行检查以查看创建存储库的文件系统是否支持符号链接。这是通过创建一个符号链接并查看它是否有效来完成的。如果不起作用,core.symlinks 设置为 false

为 Windows 构建时,仅当 core.symlinkstrue 时才会执行此检查,这表明您可能已启用该设置。

为此测试的函数确实会尝试删除符号链接,但不会 return 失败时出错,以便在这方面的检查失败时不会阻止存储库创建成功。