c# - LibGit2Sharp 日志远程

标签 c# git libgit2sharp

有没有办法列出已获取但未使用 LibGit2Sharp merge 的提交?

例如,我可以运行以下 git 命令:

C:\Users\Tom\SourceLog>git log origin
commit f3beb4960b2f4bf5641d5b512b5b8c3081512a56
Author: Tom Hunter
Date:   Wed Jan 9 22:58:51 2013 +0000

    Rollback change to icon

    Seemed to crash on windows xp for some reason..

commit d95f29a6cbfea9cb6009c3095a67d71f86d9e8bd
Author: Tom Hunter
Date:   Mon Jan 7 21:34:36 2013 +0000

    Updating Icon

commit 8785ed4ff3c46bef46ea6e2398c115b4b0203b2c
Author: Tom Hunter
Date:   Mon Jan 7 21:22:54 2013 +0000

    Fixing tests

    Moved GenerateFlowDocuments method to LogEntry class.
    Have somehow managed to greatly simplify tests..

...

前两个提交尚未 merge 到我的本地存储库中。 IE。如果我省略来源,这就是我得到的结果:

C:\Users\Tom\SourceLog>git log
commit 8785ed4ff3c46bef46ea6e2398c115b4b0203b2c
Author: Tom Hunter
Date:   Mon Jan 7 21:22:54 2013 +0000

    Fixing tests

    Moved GenerateFlowDocuments method to LogEntry class.
    Have somehow managed to greatly simplify tests..

...

以下代码只给我 8785ed。如何获取包含尚未 merge 的提交的列表?

using (var repo = new Repository(@"C:\Users\Tom\SourceLog"))
{
    var c = repo.Commits.First();
}

最佳答案

您可以通过以下方式获取远程原始分支的提交:

repo.Branches["origin/HEAD"].Commits

并且您可以使用First()按默认排序获取最新提交。但是,您可以获得远程分支的所有提交,而不仅仅是未 merge 的提交。

如果您想要收集未 merge 的提交,您应该使用QueryBy(filter) 来获取提交。 nulltoken's asnwer描述了解决方案,但其中包含错误。正确的用法是:

var filter = new Filter
{
    Since = repo.Branches["origin/HEAD"],
    Until = repo.Head
};
var notMergedCommits = repo.Commits.QueryBy(filter);

因为:

  • Since:指向提交对象的指针或要视为起点的指针列表。
  • Until:指向提交对象的指针或将从枚举中排除的指针列表(以及祖先)。

因此,使用上面的代码,您希望获得来自分支 "origin/HEAD" 的提交,并排除 "HEAD" 中包含的提交,这意味着返回所获取分支中尚未 merge 到 "HEAD" 的所有提交。

关于c# - LibGit2Sharp 日志远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295805/

相关文章:

c# - 使用 EEPlus 读取 Excel 文件时,Excel 日期字段值与 C# dateTime 相差 1 天

c# - 如何正确处理等待句柄

c# - .NET C# 从 UNC 运行应用程序导致错误

Git 或无 Git - 大型二进制文件版本控制,但不需要 merge

git - 如何检测在 LibGit2Sharp 中创建分支的提交

c# - 获取虚拟目录中文件的本地路径

git - 是否可以在团队中使用 TFS 的源代码控制,但在本地使用 Git?

git - 意外挂断后如何恢复 git pull/clone?

asp.net-mvc - 在 Ubuntu 上的 Mono ASP.NET MVC 项目中使用 LibGit2Sharp

c# - 如何使用 libgit2sharp 推送标签