簡體   English   中英

Git diff-路徑在存儲庫外部

[英]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.

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