我正在开发一个应用程序,我需要从C#运行Git命令。我使用Process来运行命令,如果我传递用户名和密码然后是说UserName或密码不正确但它实际工作常规。以下是我的代码: -
public static void PullCode(string gitCommand)
{
string strPassword = "Password";
ProcessStartInfo gitInfo = new ProcessStartInfo();
Process gitProcess = new Process();
gitInfo.CreateNoWindow = true;
gitInfo.UserName = "UserNAme";
gitInfo.Password = Misc.ConvertPassword(strPassword);
gitInfo.UseShellExecute = false;
gitInfo.FileName = @"C:\Program Files (x86)\Git\bin\git.exe"; //git repostory directory path
gitInfo.Arguments = gitCommand; //git command such as "fetch orign"
gitInfo.WorkingDirectory = @"E:\Code Demo\testrepo"; //YOUR_GIT_REPOSITORY_PATH Where you want to Copy Data
gitInfo.RedirectStandardError = true;
gitInfo.RedirectStandardOutput = true;
using( var proc = new System.Diagnostics.Process() )
{
proc.StartInfo = gitInfo;
proc.Start();
var output = proc.StandardOutput.ReadToEnd();
var error = proc.StandardError.ReadToEnd();
var logRaw = string.IsNullOrEmpty( output ) && !string.IsNullOrEmpty( error )
? error.Split( '\n' ).ToArray()
: output.Split( '\n' ).ToArray();
proc.WaitForExit();
proc.Close();
}
}
答案 0 :(得分:0)
您有两种选择。第一个是为你的git repo(或全局)设置配置使用git askpass女巫是“git config core.askpass git-gui - askpass”。将此作为您的流程的第一个命令。这里的缺点是每次执行修改命令时都会要求输入密码。
或者您可以拥有自己的可执行文件,它会要求输入一次密码,并且可以选择将密码存储到您的应用程序中。但是在这里你必须要小心,因为如果你没有正确存储它将是一个安全风险。