【问题标题】:LibGit2Sharp log remoteLibGit2Sharp 远程日志
【发布时间】:2013-01-12 17:18:19
【问题描述】:

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

例如我可以运行以下 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..

...

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

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。如何获取包含尚未合并的提交的列表?

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

【问题讨论】:

  • 你可以试试repo.Branches["origin"].Commits.First()...
  • 谢谢@nemesv,试过了,现在我得到:无法打开'C:/Users/Tom/SourceLog/.git/refs/remotes/origin':访问被拒绝。我可以在 Windows 资源管理器中打开这个目录。有什么想法吗?
  • 如上述答案中所述,正确用法是:repo.Branches["origin/HEAD"].Commits.First()
  • Bingo - 这行得通,谢谢! (如果您添加为答案,我会接受)

标签: c# git libgit2sharp


【解决方案1】:

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

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

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

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

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

因为:

  • Since:指向提交对象的指针或 要视为起点的指针列表。
  • 直到:指向提交对象的指针或将被排除在枚举中的指针列表(连同祖先)。

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

【讨论】:

  • 你是对的。我犯了一个错误。感谢您修复它!删除我的答案,让你的答案在阳光下闪耀;-)
猜你喜欢
  • 1970-01-01
  • 2014-06-13
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多