private async Task RemoveGitConfig(IExecutionContext executionContext, string targetPath, string configKey, string configValue) { int exitCode_configUnset = await _gitCommandManager.GitConfigUnset(executionContext, targetPath, configKey); if (exitCode_configUnset != 0) { // if unable to use git.exe unset http.extraheader or http.proxy, modify git config file on disk. make sure we don't left credential. if (!string.IsNullOrEmpty(configValue)) { executionContext.Warning(StringUtil.Loc("AttemptRemoveCredFromConfig")); string gitConfig = Path.Combine(targetPath, ".git/config"); if (File.Exists(gitConfig)) { string gitConfigContent = File.ReadAllText(Path.Combine(targetPath, ".git", "config")); if (gitConfigContent.Contains(configKey)) { string setting = $"extraheader = {configValue}"; gitConfigContent = Regex.Replace(gitConfigContent, setting, string.Empty, RegexOptions.IgnoreCase); setting = $"proxy = {configValue}"; gitConfigContent = Regex.Replace(gitConfigContent, setting, string.Empty, RegexOptions.IgnoreCase); File.WriteAllText(gitConfig, gitConfigContent); } } } else { executionContext.Warning(StringUtil.Loc("FailToRemoveGitConfig", configKey, configKey, targetPath)); } } }