You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibGit2Sharp克隆操作卡住问题求助

LibGit2Sharp克隆Bitbucket仓库卡住问题排查与解决

问题现象

使用LibGit2Sharp的Repository.Clone方法克隆Bitbucket仓库时,仅输出两次onCertCheck valid:True后程序无响应。账号密码验证无问题(曾成功克隆2次),更换SecureUsernamePasswordCredentials认证方式、每次运行前清理目标文件夹均无法解决。

解决方案

  • 调整仓库URL格式
    移除URL中嵌入的用户名,让CredentialsProvider全权处理认证,避免用户名冲突导致的认证流程异常:

    repoPath = Repository.Clone("https://bitbucket.org/MySite/MyGit.git", logsPath, cloneOpt);
    
  • 增强CloneOptions配置
    添加FetchOptions启用进度报告并设置修剪选项,确保克隆过程状态能被正确回调捕获:

    var cloneOpt = new CloneOptions
    {
        CredentialsProvider = (ur, us, ce) => new UsernamePasswordCredentials
        {
            Username = "MyUser",
            Password = "你的Bitbucket应用密码"
        },
        OnTransferProgress = onTransfer,
        CertificateCheck = onCertCheck,
        OnProgress = onProgress,
        FetchOptions = new FetchOptions
        {
            PruneOnFetch = true,
            EnableProgressReporting = true
        }
    };
    
  • 强制通过证书检查(测试用)
    修改onCertCheck方法强制返回true,排除证书链验证的隐性问题:

    private static bool onCertCheck(Certificate certificate, bool valid, string host)
    {
        Console.WriteLine($"onCertCheck valid:{valid}");
        return true; // 强制通过证书检查,生产环境需谨慎使用
    }
    
  • 排查网络与代理

    • 显式禁用代理,避免系统代理配置异常:
      var cloneOpt = new CloneOptions
      {
          // 其他配置...
          ProxyOptions = new ProxyOptions { ProxyType = ProxyType.None }
      };
      
    • 用Git命令行测试克隆,确认网络连通性:
      git clone https://MyUser:你的应用密码@bitbucket.org/MySite/MyGit.git
      
      若命令行克隆正常,说明问题出在LibGit2Sharp配置而非网络。
  • 升级LibGit2Sharp版本
    旧版本可能存在Bitbucket特定的克隆bug,通过NuGet更新到最新稳定版。

内容的提问来源于stack exchange,提问作者Izikon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:10:29