Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }