private void AddDeletion(string nodePath, SimplifiedSvnChangeItem changeItem, long revision)
        {
            IList <NodeAtTime> ancli;

            if (!nodes.TryGetValue(nodePath, out ancli) || ancli.Count == 0)
            {
                Progress.DebugLog("Node {0} could not be found", nodePath);
            }
            else
            {
                ancli[ancli.Count - 1].SetDeleted(revision);
            }
        }
        private void AddAddition(string nodePath, SimplifiedSvnChangeItem changeItem, long revision, ref ISet <string> filesCopiedThisRevision)
        {
            NodeAtTime parent = null;
            // get parent
            int t = 0;

            for (int k = nodePath.Length - 1; k >= 0; k--)
            {
                if (nodePath[k] == '/')
                {
                    t = k;
                    break;
                }
            }
            string             parentPath = nodePath.Substring(0, t);
            IList <NodeAtTime> parli;

            if (nodes.TryGetValue(parentPath, out parli))
            {
                if (parli.Count > 0)
                {
                    parent = parli[parli.Count - 1];
                }
            }
            else if (!String.IsNullOrEmpty(parentPath))
            {
                Progress.DebugLog("Could not find Parent \"{0}\"", parentPath);
            }
            //-------

            if (changeItem.CopyFromPath != null)
            {
                string cpFromPath = changeItem.CopyFromPath.Length > 1 ? changeItem.CopyFromPath.Substring(1) : "";

                var previousNode = GetNodeAtTime(cpFromPath, changeItem.CopyFromRevision);
                if (previousNode != null)
                {
                    AddCopy(nodePath, previousNode, parent, revision, changeItem.CopyFromRevision, ref filesCopiedThisRevision);
                }
                else
                {
                    Progress.DebugLog("Ancestor of {0}@{1} not found: {2}@{3}", nodePath, revision, cpFromPath, changeItem.CopyFromRevision);
                    return;
                }
            }
            else
            {
                NodeAtTime newlyAdded;

                IList <NodeAtTime> nodesWithSamePath;
                if (!nodes.TryGetValue(nodePath, out nodesWithSamePath))
                {
                    nodes[nodePath] = nodesWithSamePath = new List <NodeAtTime>();
                }

                newlyAdded = new NodeAtTime(nodePath, revision);

                if (parent != null)
                {
                    parent.AddChild(newlyAdded);
                }

                if (changeItem.NodeKind == SvnNodeKind.Directory)
                {
                    newlyAdded.SetIsFolder();
                }
                else if (changeItem.NodeKind == SvnNodeKind.File)
                {
                    newlyAdded.SetIsFile();
                }

                nodesWithSamePath.Add(newlyAdded);
            }
        }