/// <summary> /// Run the diff operation. Until this is called, all lists will be empty /// </summary> /// <returns>true if anything is different between index, tree, and workdir</returns> private void UpdateDirectoryRecursive(string path) { var commit = Repository.Head.CurrentCommit; _tree = (commit != null ? commit.Tree : new Core.Tree(Repository)); _index = Repository.Index.GitIndex; _index.RereadIfNecessary(); DirectoryInfo root = _index.Repository.WorkingDirectory; var visitor = new AbstractIndexTreeVisitor { VisitEntryAux = OnVisitEntry }; new IndexTreeWalker(_index, _tree, CreateWorkingDirectoryTree(path), root, visitor).Walk(); }
// Methods static IndexTreeWalkerTest() { TestIndexTreeVisitor = new AbstractIndexTreeVisitor { VisitEntry = delegate(TreeEntry treeEntry, GitIndex.Entry indexEntry, FileInfo file) { if (treeEntry == null) { IndexOnlyEntriesVisited.Add(indexEntry.Name); } else if (indexEntry == null) { TreeOnlyEntriesVisited.Add(treeEntry.FullName); } else { BothVisited.Add(indexEntry.Name); } } }; TestTreeOnlyOneLevelTreeVisitor = new AbstractIndexTreeVisitor { VisitEntry = delegate(TreeEntry entry, GitIndex.Entry indexEntry, FileInfo f) { if ((entry == null) || (indexEntry == null)) { Assert.Fail(); } }, FinishVisitTreeByIndex = delegate(Core.Tree tree, int i, string curDir) { if (tree.MemberCount == 0) { Assert.Fail(); } if (i == 0) { Assert.Fail(); } } }; }
// Methods static IndexTreeWalkerTest() { TestIndexTreeVisitor = new AbstractIndexTreeVisitor { VisitEntry = delegate(TreeEntry treeEntry, GitIndex.Entry indexEntry, FileInfo file) { if (treeEntry == null) { IndexOnlyEntriesVisited.Add(indexEntry.Name); } else if (indexEntry == null) { TreeOnlyEntriesVisited.Add(treeEntry.FullName); } else { BothVisited.Add(indexEntry.Name); } } }; TestTreeOnlyOneLevelTreeVisitor = new AbstractIndexTreeVisitor { VisitEntry = delegate(TreeEntry entry, GitIndex.Entry indexEntry, FileInfo f) { if ((entry == null) || (indexEntry == null)) { Assert.Fail(); } }, FinishVisitTreeByIndex = delegate(Tree tree, int i, string curDir) { if (tree.MemberCount == 0) { Assert.Fail(); } if (i == 0) { Assert.Fail(); } } }; }
/// <summary> /// Run the diff operation. Until this is called, all lists will be empty /// </summary> /// <returns>true if anything is different between index, tree, and workdir</returns> private bool Diff() { var commit = Repository.Head.CurrentCommit; _tree = (commit != null ? commit.Tree : new Core.Tree(Repository)); _index = Repository.Index.GitIndex; _index.RereadIfNecessary(); DirectoryInfo root = _index.Repository.WorkingDirectory; var visitor = new AbstractIndexTreeVisitor { VisitEntryAux = OnVisitEntry }; new IndexTreeWalker(_index, _tree, CreateWorkingDirectoryTree(Repository), root, visitor).Walk(); return AnyDifferences; }