嗨,我已经开始将软件包用于一些非常简单的任务,主要是克隆Git-Wiki存储库,然后在需要时从服务器提取更改。
现在我看不到任何与任务异步(TAP)模式相对应的方法。同样在文档中,我找不到任何有关的内容。
您能给我一些指导吗?如何将LibGit2Sharp方法包装到TAP构造中?链接到文档(如果我错过了什么),或者只是告诉我哪个回调函数连接到TaskCompletionSource对象会很好。
我是Git的新手,这也并没有真正的帮助,通常我只做基本的分支,合并和推送。
对于克隆,我使用:
Repository.Clone(@"https://MyName@bitbucket.org/MyRepo/MyProject.git/wiki", "repo");
对于拉动,我使用:
using (var repo = new Repository("repo"))
{
// Credential information to fetch
LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
options.FetchOptions = new FetchOptions();
var signature = new LibGit2Sharp.Signature(new Identity("myname", "mymail@google.com"), DateTimeOffset.Now);
Commands.Pull(repo, signature, options);
}
预先感谢
答案 0 :(得分:2)
首先,您永远不要尝试异步同步或异步同步。参见此article。
如果您正在考虑使用Task.Run
,请不要使用。这样就可以在线程池线程上换另一个线程,这需要增加2个上下文切换的成本。
但是您应该重新考虑整个方法。您不需要克隆存储库就可以获取文件的内容。文件的每个版本都有唯一的URL。您甚至可以获取特定分支的文件URL。