簡體   English   中英

git add --verbose輸出未在Powershell verbose流中捕獲

[英]Git add --verbose output not captured in Powershell verbose stream

當我運行“ 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
}

也許是因為git add命令在stderr而不是stdout上輸出。
使用Git 2.16+( 如我在此處所示 ),您可以嘗試:

set GIT_REDIRECT_STDERR=2>&1

但這可能會被Csharp Git程序忽略。

從我對Powershell中的流的了解( 我瀏覽了這篇文章 )來看,Powershell中的進程似乎可以寫入5個不同的輸出流。

在AFAIK中, git編寫考慮到了像安裝程序這樣的unix,並且僅“知道”兩個輸出流:stdout和stderr。 我沒有看代碼,但是我非常懷疑git的代碼庫是否經過修改以考慮Windows上的這五個流。


在您的Powershell代碼中:嘗試將回調插入Error流或Success流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM