示例#1
0
        public IList<RevisionGraphData> ParseRevisionGraph(GitOutput output)
        {
            Assert.IsNotNull(output);

            output.ThrowOnBadReturnCode();
            var parser = new GitParser(output.Output);
            var result = new List<RevisionGraphData>();
            while(!parser.IsAtEndOfString)
            {
                var sha1 = parser.ReadString(40, 1);
                int end = parser.FindNullOrEndOfString();
                int numParents = (end - parser.Position + 1) / 41;
                if(numParents == 0)
                {
                    parser.Position = end + 1;
                    result.Add(new RevisionGraphData(sha1, new string[0]));
                }
                else
                {
                    var parents = new List<string>(numParents);
                    for(int i = 0; i < numParents; ++i)
                    {
                        parents.Add(parser.ReadString(40, 1));
                    }
                    result.Add(new RevisionGraphData(sha1, parents));
                }
            }
            return result;
        }
示例#2
0
        public IList<ConfigParameterData> ParseQueryConfigResults(QueryConfigParameters parameters, GitOutput output)
        {
            Assert.IsNotNull(parameters);
            Assert.IsNotNull(output);

            if(output.ExitCode != 0 && parameters.ConfigFile != ConfigFile.Other)
            {
                return new ConfigParameterData[0];
            }
            HandleConfigResults(output);
            var res = new List<ConfigParameterData>();
            var parser = new GitParser(output.Output);
            while(!parser.IsAtEndOfString)
            {
                var name = parser.ReadStringUpTo(parser.FindNewLineOrEndOfString(), 1);
                var value = parser.ReadStringUpTo(parser.FindNullOrEndOfString(), 1);
                if(parameters.ConfigFile != ConfigFile.Other)
                {
                    res.Add(new ConfigParameterData(name, value, parameters.ConfigFile));
                }
                else
                {
                    res.Add(new ConfigParameterData(name, value, parameters.FileName));
                }
            }
            return res;
        }