![](/img/trans.png)
[英]How to execute git commands giving repository path explicitly using C# .net Core?
[英]Git diff - path is outside repository
我想執行一個git diff命令。 以下命令導致“致命-路徑在存儲庫外部”錯誤。 它使用Process類在C#應用程序中實現。
git diff HEAD-“文件夾\\ TestFile.cs”>“ C:\\ Users \\ Name \\ AppData \\ Local \\ Temp \\ tmpEA7C.diff”
致命:C:\\ Users \\ Name \\ AppData \\ Local \\ Temp \\ tmpEA7C.diff:C:\\ Users \\ Name \\ AppData \\ Local \\ Temp \\ tmpEA7C.diff在存儲庫外部。
命令“有效”,因為我可以在命令提示符(cmd)中成功執行它。
您能否解釋該命令出了什么問題以及如何在C#應用程序中解決該問題?
您似乎正在嘗試將標准輸出重定向到文件。 重定向由shell處理,並且Process
類不支持它。 而是將> C:\\Users\\Name\\AppData\\Local\\Temp\\tmpEA7C.diff
傳遞給git進程。 這就是為什么git抱怨路徑C:\\Users\\Name\\AppData\\Local\\Temp\\tmpEA7C.diff
不在存儲庫中。
如果您正在調用流程並想閱讀其標准輸出,則您有責任這樣做。
您可以使用Process
類捕獲輸出。 例如:
var proc = new Process {
StartInfo = new ProcessStartInfo {
FileName = "git.exe",
Arguments = "diff HEAD -- "Folder\TestFile.cs"",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream) {
var line = proc.StandardOutput.ReadLine();
}
當然,您也可以使用LibGit2Sharp ,而不必擔心進程創建和屏幕抓取輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.