internal void Resolve()
{
if (iTree == null)
{
iParents = new List<ICommit>();
string commit = ASCIIEncoding.ASCII.GetString(iReference.Contents);
string[] lines = commit.Split(new char[] { '\n' });
int offset = 1;
foreach (string line in lines)
{
if (line.Length == 0)
{
break;
}
offset += line.Length + 1;
string[] parts = line.Split(new char[] { ' ' }, 2);
CorruptIf(parts.Length != 2);
string key = parts[0];
string value = parts[1];
switch (key)
{
case "tree":
CorruptIf(iTree != null);
iTree = new Tree(new TreeRef(iReference.Repository, value));
break;
case "parent":
iParents.Add(new Commit(new CommitRef(iReference.Repository, value)));
break;
case "author":
CorruptIf(iAuthor != null);
iAuthor = PersonTime.Create(value);
break;
case "committer":
CorruptIf(iCommitter != null);
iCommitter = PersonTime.Create(value);
break;
default:
CorruptIf(true);
break;
}
}
CorruptIf(iTree == null);
CorruptIf(iAuthor == null);
CorruptIf(iCommitter == null);
iDescription = commit.Substring(offset);
}
}