当我运行“ 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
}
答案 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
流中。