示例#1
0
        public static List <GitCommit> ParseLog(string log)
        {
            const string Separator = "\x00\x00";

            var s  = log.AsSpan();
            var cs = Separator.AsSpan();

            var commits = new List <GitCommit>();

            while (!s.IsEmpty)
            {
                var nextIndex = s.IndexOf(cs);
                if (nextIndex == -1)
                {
                    nextIndex = s.Length;
                }

                var entry = s.Slice(0, nextIndex).TrimStart('\n');

                var commit = ParseCommit(entry.ToString());
                if (commit == null)
                {
                    break;                 //maybe throw?
                }
                commits.Add(commit);
                s = s.Slice(nextIndex + cs.Length);
            }

            return(commits);
        }