예제 #1
0
        private void MockupGitOutput(string output, string encodedUrl = DummyUrlEncoded)
        {
            var gitArguments = new GitArgumentBuilder("ls-remote")
            {
                "--heads", encodedUrl
            };

            _gitExecutable.GetOutput(gitArguments).Returns(_ => output);
        }
예제 #2
0
        public static string GetBatchOutput(
            this IExecutable executable,
            ICollection <BatchArgumentItem> batchArguments,
            byte[]?input              = null,
            Encoding?outputEncoding   = null,
            CommandCache?cache        = null,
            bool stripAnsiEscapeCodes = true)
        {
            var sb = new StringBuilder();

            foreach (var batch in batchArguments)
            {
                sb.Append(executable.GetOutput(batch.Argument, input, outputEncoding, cache, stripAnsiEscapeCodes));
            }

            return(sb.ToString());
        }
예제 #3
0
        /// <summary>
        /// Returns the branches of a remote repository as strings; ignores git errors and warnings.
        /// </summary>
        /// 'git ls-remotes --heads "URL"' is completely independent from a local repo clone.
        /// Hence there is no need for a GitModule.
        /// <param name="gitExecutable">the git executable.</param>
        /// <param name="url">the repo URL; can also be a local path.</param>
        private static IEnumerable <string> LoadRemoteRepoBranches(IExecutable gitExecutable, string url)
        {
            if (string.IsNullOrWhiteSpace(url))
            {
                return(Array.Empty <string>());
            }

            var gitArguments = new GitArgumentBuilder("ls-remote")
            {
                "--heads", url.ToPosixPath().Quote()
            };
            var heads = gitExecutable.GetOutput(gitArguments);

            return(heads.LazySplit('\n', StringSplitOptions.RemoveEmptyEntries)
                   .Select(head =>
            {
                int branchIndex = head.IndexOf(GitRefName.RefsHeadsPrefix);
                return branchIndex == -1 ? null : head.Substring(branchIndex + GitRefName.RefsHeadsPrefix.Length);
            })
                   .WhereNotNull()
                   .ToImmutableList());
        }