1

我正在尝试使用 Repository.Clone 克隆一个 git 存储库。

这是用于克隆命令的示例代码。

public string Clone(string remoteRepository, string path, string username, string password)
{
    string myPassword;
    CloneOptions options = new CloneOptions();
    options.CredentialsProvider = (url, user, cred) =>
    {
        return new UsernamePasswordCredentials {Username = username, Password = password};
    };
    return Repository.Clone(remoteRepository, path, options);
}

该代码在某些存储库上运行良好,但对于其他存储库,我得到了异常

这是我得到的例外

{"无法统计文件 'snipped': 文件名或扩展名太长。\r\n"}

整个“剪切”路径的长度为 270 个字符。所以我知道这违反了极其古老的 MAX_PATH 规则。

根据一些 windows 文档,您可以通过将 \?\ 添加到路径的开头来使用 unicode 路径,这将允许长路径与 windows API 调用一起使用。但是,这不适用于 LibGit2Sharp。

有没有办法为 LibGit2Sharp 提供设置以允许它使用长路径?或者如果做不到这一点,是否有允许这种行为的替代 nuget 包?

4

1 回答 1

1

将此添加到App.manifest中,这将允许长路径。我尝试使用/?//unc但两者都没有太大帮助。但这有效。

<windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
    <ws2:longPathAware>true</ws2:longPathAware>
  </windowsSettings>
于 2016-11-28T11:50:21.937 回答