Git add --verbose输出未在Powershell verbose流中捕获

时间:2019-01-21 05:05:46

标签: c# git powershell

当我运行“ git add。--verbose”时,我收到显示如下所示正在添加文件的消息:

add 'file1.txt"
add 'file2.txt"

但是,当我通过PowerShellInstance.BeginInvoke()在C#中运行相同的git命令时,详细消息不会重定向到Streams.Verbose。实际上,它们没有被重定向到任何流。我想念什么?代码有什么问题吗?

这是我的代码:

var ps = PowerShell.Create();
ps.Streams.Verbose.DataAdded += VerboseStream_DataAdded;
ps.BeginInvoke<PSObject, PSObject>(null, output);

void VerboseStream_DataAdded(object sender, DataAddedEventArgs e)
{
   // this is never called
}

2 个答案:

答案 0 :(得分:1)

这也许是因为git add命令在stderr而不是stdout上输出了。
使用Git 2.16+(as I show here),您可以尝试:

docker run ... --shm_size=1g

但是Csharp Git程序可能会忽略它。

答案 1 :(得分:1)

根据我对Powershell(I glanced at this article)中流的了解,看来Powershell中的进程可能会写入5个不同的输出流。

AFAIK,git在编写时就考虑了类似unix的设置,并且仅“知道”两个输出流:stdout和stderr。我没有看代码,但我高度怀疑git的代码库是否经过修改以考虑Windows上的这五个流。


在Powershell代码中:尝试将回调插入Error流或Success流中。