gpt4 book ai didi

c# - 使用 libgit2sharp 推送到 bitbucket

转载 作者:太空狗 更新时间:2023-10-29 13:35:59 25 4
gpt4 key购买 nike

我正在尝试使用 libgit2sharp 推送到我在 bitbucket 上的存储库。我正在尝试这样做:

repo.Network.Push(repo.Branches[branchName], pushOptions);

一切似乎都很好,没有抛出异常,回调中也没有错误,但是当我检查 bitbucket 时,我的提交都没有。其他方法似乎工作正常(即我可以在 bitbucket 上创建一个新分支,然后使用 libgit2sharp 来获取并看到我现在在本地有那个分支)。这里有什么我可能遗漏的吗?

编辑:

试图只制作一个小示例程序,看看我是否能让它正常工作。我不知道我的代码是否有帮助,但它是:

 class Program
{
static void Main(string[] args)
{
PushOptions options = new PushOptions();
Credentials creds = new Credentials();
creds.Username = "username";
creds.Password = "password";
options.Credentials = creds;
options.OnPackBuilderProgress = Program.packBuilderProgressHandler;
options.OnPushTransferProgress = Program.pushTransferProgressHandler;
options.OnPushStatusError = Program.pushStatusErrorHandler;
Repository repo = new Repository("E:/Ohad/Work/libgitTest");

repo.Network.Push(repo.Branches["origin/master"], options);

Console.WriteLine("Press enter to close...");
Console.ReadLine();
}

public static bool packBuilderProgressHandler(PackBuilderStage stage, int current, int total)
{
Console.Out.WriteLine("packBuilder => " + current + " / " + total);
return true;
}
public static bool pushTransferProgressHandler(int current, int total, long bytes)
{
Console.Out.WriteLine("pushTransfer => " + current + " / " + total + " , " + bytes);
return true;
}
public static void pushStatusErrorHandler(PushStatusError error)
{
Console.Out.WriteLine("error => " + error.Message);
}
}

只需在 bitbucket 上创建一个新的 repo 并添加上面的代码(更改硬编码的内容),它应该是可重现的。我只是做了一个随机更改,添加并提交了它,然后使用该程序尝试推送到 bitbucket。我从上面得到的输出是:

pushTransfer => 0 / 0 , 12
pushTransfer => 0 / 0 , 32
Press enter to close...

0/0 在我看来很可疑,但我不知道自己做错了什么 =/。谢谢你的帮助!!

编辑 2:我刚刚添加了这个:

 repo.Branches.Update(repo.Head, delegate(BranchUpdater updater)
{
updater.Remote = "origin";
updater.UpstreamBranch= repo.Head.CanonicalName;
})

在我推送之前,它解决了问题。不确定确切原因,但我会接受 =)。

最佳答案

我认为您愿意 push 您的本地 master 分支而不是远程跟踪分支。

repo.Network.Push(repo.Branches["master"], options);

更新:

*The branch 'master' ("refs/heads/master") that you are trying to push does not track an upstream branch. *

如果您没有“origin” Remote ,则以下操作应该有效。

Remote remote = localRepo.Network.Remotes.Add("origin", url);

repo.Branches.Update(repo.Head, -> (A)
b => b.Remote = remote.Name, -> (B)
b => b.UpstreamBranch = repo.Head.CanonicalName); -> (C)

上面的代码应该被理解为“默认情况下,本地存储库上 HEAD (A) 指向的分支将被配置为跟踪具有相同名称的分支(C) 位于由此远程 (B) 标识的远程存储库中。”

关于c# - 使用 libgit2sharp 推送到 bitbucket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com