首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GitHub连接到libgit2回购?

如何使用GitHub连接到libgit2回购?
EN

Stack Overflow用户
提问于 2013-11-25 05:31:13
回答 1查看 4.2K关注 0票数 2

我正试着连接到回购系统:

代码语言:javascript
复制
using(var Git = new Repository(
    Repository.Clone("https://github.com/wikimedia/mediawiki-core", "tmp")
)){
    foreach(var Commit in Git.Commits)
    {
        MessageBox.Show(Commit.Author.Name);
    }
}

它连接ok (例如,如果我更改了URL,就会得到预期的异常),但是没有显示MessageBoxes --为什么?这应该很简单。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-25 09:01:28

关于你的问题,有几件事要考虑:

  • 不能通过git协议“连接”到远程存储库并动态检索一个文件。通常,它需要检索一个本地副本(通过Repository.Clone()),然后对本地存储库执行一些工作。
  • Mediawiki-core是一个相当大的存储库。它包含超过10000次提交。因此,要克隆它需要相当长的时间。可以通过向Clone()方法提供一个传输进度处理程序来了解克隆的进展情况。
  • @CarlosMartínNieto是对的。如果您只需要一个文件(而不是存储库的整个历史),那么依赖GitHub API确实会更有效率。注意,这个API的使用是通过一些您可能想要考虑的rate limitations来控制的,这取决于预期的使用。

下面的代码(很大程度上来自您自己的代码)克隆一个远程存储库,将当前的克隆进程输出到控制台,并枚举可以从HEAD获得的提交。

它已经在LibGit2Sharp v0.14.1 NuGet包上成功测试。

代码语言:javascript
复制
public void CloneAndEnumerateCommitsFromHead()
{
    var tmp = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

    string path = Repository.Clone(
        "https://github.com/nulltoken/TestGitRepository", 
        tmp,
        onTransferProgress: ProgressHandler);

    using (var Git = new Repository(path))
    {
        foreach (var Commit in Git.Commits)
        {
            Console.WriteLine("{0} by {1}",
                Commit.Id.ToString(7),
                Commit.Author.Name);
        }
    }
}

private int ProgressHandler(TransferProgress progress)
{
    Console.WriteLine("{0}/{1}", progress.IndexedObjects, progress.TotalObjects);
    return 0;
}

在运行时,它输出以下内容

代码语言:javascript
复制
0/70
1/70
2/70
2/70
...snipped for brevity...
68/70
69/70
70/70
70/70
49322bb by A U Thor
d0114ab by A U Thor
f73b956 by A U Thor
6e14752 by A U Thor
1203b03 by A U Thor
bab66b4 by A U Thor
83834a7 by A U Thor
6462e7d by A U Thor
42e4e7c by A U Thor
7f82283 by A U Thor
59706a1 by A U Thor
c070ad8 by A U Thor
d31f5a6 by A U Thor
83d2f04 by A U Thor
6db9c2e by A U Thor
d86a2aa by A U Thor
0966a43 by A U Thor
2c34933 by A U Thor
ac7e7e4 by A U Thor
58be465 by A U Thor
6c8b137 by A U Thor
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20185412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档