示例#1
0
        public static Commit GetHeadOrDefault(string directory, ILogger log)
        {
            if (!GitCommand.TryRun("log --pretty=format:\"%H %P\"", directory, log, out var output))
            {
                return(null);
            }

            var commits = new Dictionary <string, Commit>();

            foreach (var shas in output
                     .Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                     .Select(line => line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)))
            {
                commits.GetOrAdd(shas[0], () => new Commit(shas[0]))
                .Parents.AddRange(shas.Skip(1).Select(parentSha => commits.GetOrAdd(parentSha, () => new Commit(parentSha))));
            }

            return(commits.Values.FirstOrDefault());
        }
示例#2
0
 public static bool IsWorkingDirectory(string directory, ILogger log) => GitCommand.TryRun("status --short", directory, log, out _);