Я разрабатываю приложение, где мне нужно запустить Git Command из С#. Я использовал Process для запуска команд, если я передаю имя пользователя и пароль, а затем говорит UserName или Password is Notorrect, но это фактически работает обычным. Ниже мой код: -
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();
}
}
У вас есть два варианта. Первый заключается в том, чтобы настроить конфигурацию для вашего git-репо (или глобально) для использования git askpass witch - "git config core.askpass git-gui - askpass". Назовите это как первую команду для вашего процесса. Недостатком здесь является то, что каждый раз, когда вы выполняете команду изменения, он запрашивает пароль.
Или вы можете иметь свою собственную исполняемую ведьму, которая будет запрашивать пароль один раз и иметь возможность хранить пароль в своем приложении. Но здесь вам нужно быть осторожным, так как если вы не сохраните его должным образом, это будет угрозой безопасности.