C#Git Command问题

时间:2015-03-17 07:18:59

标签: c# .net git

我正在开发一个应用程序,我需要从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();
    }
}

1 个答案:

答案 0 :(得分:0)

您有两种选择。第一个是为你的git repo(或全局)设置配置使用git askpass女巫是“git config core.askpass git-gui - askpass”。将此作为您的流程的第一个命令。这里的缺点是每次执行修改命令时都会要求输入密码。

或者您可以拥有自己的可执行文件,它会要求输入一次密码,并且可以选择将密码存储到您的应用程序中。但是在这里你必须要小心,因为如果你没有正确存储它将是一个安全风险。