LibGit2Sharp 从网络文件共享克隆

标签 libgit2sharp

当远程主机托管在网络驱动器上时,我在使用文件传输进行克隆时遇到问题。

我下载了该项目并尝试添加一些测试用例:

[Fact]
public void CanCloneALocalRepositoryFromANetworkDriveUri()
{
    var networkPath = @"file:///192.168.1.1/Share/TestRepo.git";
    var uri = new Uri(networkPath);
    AssertLocalClone(uri.AbsoluteUri, BareTestRepoPath);
}

失败的原因是:

LibGit2Sharp.LibGit2SharpException : failed to resolve path 'file://192.168.1.1/Share/TestRepo.git': The filename, directory name, or volume label syntax is incorrect.

我尝试将驱动器号 (Z:) 映射到共享,并运行以下命令:

[Fact]
public void CanCloneALocalRepositoryFromAMappedNetworkDrive()
{
    var networkPath = @"file:///Z:/TestRepo.git";
    var uri = new Uri(networkPath);
    AssertLocalClone(uri.AbsoluteUri, BareTestRepoPath);
}

失败的原因是:

LibGit2Sharp.LibGit2SharpException : failed to resolve path 'Z:/TestRepo.git': The system cannot find the path specified.

除非我设置:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLinkedConnections

为 DWORD 值 1,如 this TechNet article - 在这种情况下克隆成功。但是,在我的情况下,这不是一个可行的解决方案,因为它会在安全意识环境中引发部署问题。

LibGit2Sharp 似乎无法从文件 UNC 进行克隆。我理解正确吗?如果理解正确,有什么办法可以解决这个问题吗?

最佳答案

file:/// URL 语法不适合 UNC 路径。只需使用 UNC 路径,例如:

\\192.168.1.1\Share\TestRepo.git

这也适用于 LibGit2Sharp 和 git 命令行客户端。

关于LibGit2Sharp 从网络文件共享克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46534743/

相关文章:

c# - LibGit2Sharp DllNotFoundException : Unable to load DLL 'git2-106a5f2'

c# - costura.fody 用于引用另一个 dll 的 dll

c# - 以编程方式删除克隆存储库的目录

c# - 如何使用 LibGit2Sharp 从 Git 获取更改?

c# - Git 仓库内部格式解释

libgit2sharp - 迭代存储库的提交时出现性能问题?

c# - 如何获取包含 libgit2sharp 中提交的远程分支列表

c# - libgit2sharp 创建拉取请求

libgit2 - 如何提交并推送 libgit2sharp

c# - LibGit2Sharp 是否支持从本地文件系统克隆存储库?