0

I am calling git clone from a C# application by creating a new process and it calls git successfully but no ouput is returned to my delegate. This means I can't provide any updates to the user as the process progresses. The Clone_DataOutputReceived method is not being called at all.

public void CloneRepo(string repoUrl, string dataPath)
{
   var process = new Process();
   process.StartInfo.FileName = @"git.exe";
   process.StartInfo.Arguments = $"clone {repoUrl}";
   process.StartInfo.WorkingDirectory = dataPath;

   process.OutputDataReceived += Clone_DataOutputReceived;

   process.StartInfo.RedirectStandardOutput = true;
   process.StartInfo.RedirectStandardError = true;
   process.StartInfo.UseShellExecute = false;
   process.StartInfo.CreateNoWindow = true;

   process.Start();
   process.BeginOutputReadLine();
   process.WaitForExit();
   process.CancelOutputRead();
}


private void Clone_DataOutputReceived(object sender, DataReceivedEventArgs e)
{
   // This method is not being called
   // Expecting d.Data to be populated with the line from the output
}
Matthew van Boheemen
  • 1,087
  • 3
  • 13
  • 21

1 Answers1

0

I think you want to set FileName to "cmd.exe" and then issue process.SendCommand("git.exe") to the cmd instance.

Morrolan
  • 317
  • 3
  • 10