如何在C#中配置Bonobo Git远程仓库URL以实现文件推送?
解决Bonobo Git远程仓库推送时的URL配置问题
你遇到的问题很典型——混淆了LibGit2Sharp里远程URL的配置位置,把它错放到了凭据回调的参数里,才导致了Method name expected错误。我来给你理清楚正确的做法:
首先要明确:代码里凭据回调中的url参数是LibGit2Sharp在推送过程中自动传入的远程仓库地址,不需要你手动赋值,你只需要在这个回调里返回正确的用户名密码凭据就行。
那Bonobo仓库的URL该放哪儿?有两种常用方式:
方式一:预先关联本地仓库与远程(推荐)
如果你的本地仓库还没和Bonobo远程仓库关联,先添加远程配置,之后推送就可以直接用远程名(比如origin)来操作:
using (var repo = new Repository("path/to/your/local/repo")) { // 检查是否已存在名为"origin"的远程,没有就添加 if (repo.Network.Remotes["origin"] == null) { repo.Network.Remotes.Add("origin", "http://localhost/Bonobo.git.server/secondRepo.git"); } var pushOptions = new LibGit2Sharp.PushOptions(); pushOptions.CredentialsProvider = new CredentialsHandler( (url, usernameFromUrl, types) => new UsernamePasswordCredentials() { Username = USERNAME, Password = PASSWORD }); // 推送指定本地分支到远程对应分支 var targetBranch = repo.Branches[BRANCHNAME]; repo.Network.Push(targetBranch, pushOptions); }
方式二:推送时直接指定远程URL
如果不想预先配置远程,也可以用Push的重载方法,直接把Bonobo仓库URL作为参数传入:
using (var repo = new Repository("path/to/your/local/repo")) { var pushOptions = new LibGit2Sharp.PushOptions(); pushOptions.CredentialsProvider = new CredentialsHandler( (url, usernameFromUrl, types) => new UsernamePasswordCredentials() { Username = USERNAME, Password = PASSWORD }); var targetBranch = repo.Branches[BRANCHNAME]; // 直接传入远程仓库URL进行推送 repo.Network.Push(targetBranch, "http://localhost/Bonobo.git.server/secondRepo.git", pushOptions); }
简单总结下:你之前的错误是把URL硬塞进了凭据回调的url参数位置,这个参数是系统自动填充的,不能手动赋值。正确的位置要么是本地仓库的远程配置里,要么是Push方法的参数中。
内容的提问来源于stack exchange,提问作者Santosh Jogade
相关产品推荐
相关产品推荐

