private static void ReadPaths(
            RevisionControlHistoryEntry entry,
            XmlReader xmlReader)
        {
            xmlReader.Read();
            List <RevisionControlHistoryEntryPath> pathsCollected = new List <RevisionControlHistoryEntryPath>();

            while (xmlReader.NodeType != XmlNodeType.EndElement)
            {
                switch (xmlReader.Name)
                {
                case "path":
                    RevisionControlHistoryEntryPath path = new RevisionControlHistoryEntryPath();
                    path.Action = ParseAction(xmlReader.GetAttribute("action"));
                    path.Path   = xmlReader.ReadElementContentAsString();
                    pathsCollected.Add(path);
                    break;

                default:
                    throw new NotSupportedException();
                }
            }

            xmlReader.Read();

            entry.SetPaths(pathsCollected.ToArray());
        }
        private static void ReadLogEntry(RevisionControlHistoryData historyData, XmlReader xmlReader)
        {
            RevisionControlHistoryEntry entry = new RevisionControlHistoryEntry();

            entry.Revision = xmlReader.GetAttribute("revision");

            xmlReader.Read();

            while (xmlReader.NodeType != XmlNodeType.EndElement)
            {
                switch (xmlReader.Name)
                {
                case "author":
                    entry.Author = xmlReader.ReadElementContentAsString();
                    break;

                case "date":
                    entry.Time = xmlReader.ReadElementContentAsDateTime();
                    break;

                case "msg":
                    entry.Message = xmlReader.ReadElementContentAsString();
                    break;

                case "paths":
                    ReadPaths(entry, xmlReader);
                    break;

                default:
                    throw new NotSupportedException();
                }
            }

            xmlReader.Read();

            historyData.AddEntry(entry);
        }