LibGit2Sharp - 访问完全 Git 推送输出

LibGit2Sharp - Access full Git Push Output

我需要从 Git 捕获推送操作产生的完整输出,以便我可以在需要时解析错误。

在 Lib 之外Git2Sharp 这可以通过重定向 StandardError 来完成。

有没有办法在当前的库状态下实现这个?我查看了 类 ,似乎现在它被混淆了。希望我错过了什么?

LibGit2Sharp 是 libgit2 的包装器,它是一个重新实现 Git 功能的 C 库。它是一个独立的库,在后台不使用 Git。

但是,有一些方法可以使用 libgit2 从远程获取信息。由于我无法快速找到包含 LibGit2Sharp 文档的网页,我将向您展示 libgit2 文档,并让您了解它在 .NET 中的样子。

当您使用 libgit2 推送时,您可以指定一组回调,库可以在某些事件发生时提供这些回调。这可用于提供进度或其他状态信息。 struct documentation 表示一个名为sideband_progress 的成员,它是对远程端发送的文本输出的回调。在正常的 git push 调用中,这是以 remote:.

开头的行

每当远程端发送完整的一行时,将调用该回调,您将获得该输出。请注意,输出通常包含一个回车 return 以覆盖之前的条目,并且回调可能会被调用很多次,这可能会影响您希望如何存储和处理输出。

话虽如此,获取数据的理想方法是使用库中的错误代码,因为这将是获取数据的最简单和最可靠的方法。解析错误消息很棘手;如果您正在与任意 Git 服务器通信,则不能保证它会使用与 Git 相同的错误消息,甚至不能保证它产生的任何输出都是英文的。但是,有时您无法避免它,所以如果是这种情况,您现在知道该怎么做了。