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; }
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; }