private static void CloneRepository(string item) { var outputDirectory = "D:\\GIT"; string Clone(string s) { using var process = new RunProcess.ProcessHost("git.exe", outputDirectory); process.Start($"clone {s}"); process.WaitForExit(TimeSpan.MaxValue); return(process.StdErr.ReadAllText(Encoding.UTF8)); } string GetTargetDirectory(string cloneOutput) { var regex = "^Cloning into \'(?<Folder>.+?)\'"; var match = Regex.Match(cloneOutput, regex, RegexOptions.Multiline | RegexOptions.IgnoreCase); var outputFolder = match.Groups["Folder"].Value; return(Path.Join(outputDirectory, outputFolder)); } var url = GetRepositoryUrl(item); var cloneOutput = Clone(url); var targetDirectory = GetTargetDirectory(cloneOutput); Process.Start("explorer.exe", targetDirectory); }
private static string GetRepositoryUrl(string item) { var folder = GetDirectoryFullName(item); using var process = new RunProcess.ProcessHost("git.exe", folder); process.Start("config --get remote.origin.url"); process.WaitForExit(TimeSpan.MaxValue); var url = process.StdOut.ReadAllText(Encoding.UTF8).Trim(); return(url); }