optimize<Command>: each process has its own envs

This commit is contained in:
leo 2021-10-12 17:26:39 +08:00
parent 75a46ceb74
commit 48020861ee
5 changed files with 11 additions and 4 deletions

View file

@ -14,7 +14,7 @@ namespace SourceGit.Commands {
handler = outputHandler;
if (!string.IsNullOrEmpty(sshKey)) {
Environment.SetEnvironmentVariable("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Envs.Add("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Args = "";
} else {
Args = "-c credential.helper=manager ";

View file

@ -52,6 +52,11 @@ namespace SourceGit.Commands {
/// </summary>
public bool TraitErrorAsOutput { get; set; } = false;
/// <summary>
/// 用于设置该进程独有的环境变量
/// </summary>
public Dictionary<string, string> Envs { get; set; } = new Dictionary<string, string>();
/// <summary>
/// 运行
/// </summary>
@ -68,6 +73,8 @@ namespace SourceGit.Commands {
if (!string.IsNullOrEmpty(Cwd)) start.WorkingDirectory = Cwd;
foreach (var kv in Envs) start.EnvironmentVariables[kv.Key] = kv.Value;
var progressFilter = new Regex(@"\s\d+%\s");
var errs = new List<string>();
var proc = new Process() { StartInfo = start };

View file

@ -16,7 +16,7 @@ namespace SourceGit.Commands {
var sshKey = new Config(repo).Get($"remote.{remote}.sshkey");
if (!string.IsNullOrEmpty(sshKey)) {
Environment.SetEnvironmentVariable("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Envs.Add("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Args = "";
} else {
Args = "-c credential.helper=manager ";

View file

@ -16,7 +16,7 @@ namespace SourceGit.Commands {
var sshKey = new Config(repo).Get($"remote.{remote}.sshkey");
if (!string.IsNullOrEmpty(sshKey)) {
Environment.SetEnvironmentVariable("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Envs.Add("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Args = "";
} else {
Args = "-c credential.helper=manager ";

View file

@ -14,7 +14,7 @@ namespace SourceGit.Commands {
var sshKey = new Config(repo).Get($"remote.{remote}.sshkey");
if (!string.IsNullOrEmpty(sshKey)) {
Environment.SetEnvironmentVariable("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Envs.Add("GIT_SSH_COMMAND", $"ssh -i '{sshKey}'");
Args = "";
} else {
Args = "-c credential.helper=manager ";