gpt4 book ai didi

c# - 使用c#获取git命令行返回值

转载 作者:太空狗 更新时间:2023-10-29 13:21:07 25 4
gpt4 key购买 nike

我想从 C# 运行 git 命令。下面是我编写的代码,它确实执行了 git 命令,但我无法捕获返回值。当我从命令行手动运行它时,这是我得到的输出。

enter image description here

当我从程序运行时,我唯一得到的是

Cloning into 'testrep'...

其余信息未捕获,但命令已成功执行。

class Program
{
static void Main(string[] args)
{
ProcessStartInfo startInfo = new ProcessStartInfo("git.exe");

startInfo.UseShellExecute = false;
startInfo.WorkingDirectory = @"D:\testrep";
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.Arguments = "clone http://tk1:tk1@localhost/testrep.git";

Process process = new Process();
process.StartInfo = startInfo;
process.Start();

List<string> output = new List<string>();
string lineVal = process.StandardOutput.ReadLine();

while (lineVal != null)
{

output.Add(lineVal);
lineVal = process.StandardOutput.ReadLine();

}

int val = output.Count();
process.WaitForExit();

}
}

最佳答案

来自 git clone 的手册页:

--progress Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal.

以交互方式运行 git clone 时输出中的最后三行被发送到标准错误,而不是标准输出。但是,当您从程序运行命令时,它们不会出现在那里,因为它不是交互式终端。您可以强制它们出现,但输出不会是任何可用于程序解析的内容(大量 \r 用于更新进度值)。

你最好根本不解析字符串输出,而是查看 git clone 的整数返回值。如果它不为零,则说明您有错误(标准错误中可能会有一些您可以向用户显示的内容)。

关于c# - 使用c#获取git命令行返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12932319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com