public virtual void FailingPathsShouldNotResultInOKReturnValue(MergeStrategy strategy ) { FilePath folder1 = new FilePath(db.WorkTree, "folder1"); FileUtils.Mkdir(folder1); FilePath file = new FilePath(folder1, "file1.txt"); Write(file, "folder1--file1.txt"); file = new FilePath(folder1, "file2.txt"); Write(file, "folder1--file2.txt"); Git git = new Git(db); git.Add().AddFilepattern(folder1.GetName()).Call(); RevCommit @base = git.Commit().SetMessage("adding folder").Call(); RecursiveDelete(folder1); git.Rm().AddFilepattern("folder1/file1.txt").AddFilepattern("folder1/file2.txt"). Call(); RevCommit other = git.Commit().SetMessage("removing folders on 'other'").Call(); git.Checkout().SetName(@base.Name).Call(); file = new FilePath(db.WorkTree, "unrelated.txt"); Write(file, "unrelated"); git.Add().AddFilepattern("unrelated.txt").Call(); RevCommit head = git.Commit().SetMessage("Adding another file").Call(); // Untracked file to cause failing path for delete() of folder1 file = new FilePath(folder1, "file3.txt"); Write(file, "folder1--file3.txt"); ResolveMerger merger = (ResolveMerger)strategy.NewMerger(db, false); merger.SetCommitNames(new string[] { "BASE", "HEAD", "other" }); merger.SetWorkingTreeIterator(new FileTreeIterator(db)); bool ok = merger.Merge(head.Id, other.Id); NUnit.Framework.Assert.IsFalse(merger.GetFailingPaths().IsEmpty()); NUnit.Framework.Assert.IsFalse(ok); }
public virtual void CheckMergeEqualTreesInCore(MergeStrategy strategy) { Git git = Git.Wrap(db); WriteTrashFile("d/1", "orig"); git.Add().AddFilepattern("d/1").Call(); RevCommit first = git.Commit().SetMessage("added d/1").Call(); WriteTrashFile("d/1", "modified"); RevCommit masterCommit = git.Commit().SetAll(true).SetMessage("modified d/1 on master" ).Call(); git.Checkout().SetCreateBranch(true).SetStartPoint(first).SetName("side").Call(); WriteTrashFile("d/1", "modified"); RevCommit sideCommit = git.Commit().SetAll(true).SetMessage("modified d/1 on side" ).Call(); git.Rm().AddFilepattern("d/1").Call(); git.Rm().AddFilepattern("d").Call(); ThreeWayMerger resolveMerger = (ThreeWayMerger)strategy.NewMerger(db, true); bool noProblems = resolveMerger.Merge(masterCommit, sideCommit); NUnit.Framework.Assert.IsTrue(noProblems); }
public virtual void FailingPathsShouldNotResultInOKReturnValue(MergeStrategy strategy ) { FilePath folder1 = new FilePath(db.WorkTree, "folder1"); FileUtils.Mkdir(folder1); FilePath file = new FilePath(folder1, "file1.txt"); Write(file, "folder1--file1.txt"); file = new FilePath(folder1, "file2.txt"); Write(file, "folder1--file2.txt"); Git git = new Git(db); git.Add().AddFilepattern(folder1.GetName()).Call(); RevCommit @base = git.Commit().SetMessage("adding folder").Call(); RecursiveDelete(folder1); git.Rm().AddFilepattern("folder1/file1.txt").AddFilepattern("folder1/file2.txt"). Call(); RevCommit other = git.Commit().SetMessage("removing folders on 'other'").Call(); git.Checkout().SetName(@base.Name).Call(); file = new FilePath(db.WorkTree, "unrelated.txt"); Write(file, "unrelated"); git.Add().AddFilepattern("unrelated.txt").Call(); RevCommit head = git.Commit().SetMessage("Adding another file").Call(); // Untracked file to cause failing path for delete() of folder1 file = new FilePath(folder1, "file3.txt"); Write(file, "folder1--file3.txt"); ResolveMerger merger = (ResolveMerger)strategy.NewMerger(db, false); merger.SetCommitNames(new string[] { "BASE", "HEAD", "other" }); merger.SetWorkingTreeIterator(new FileTreeIterator(db)); bool ok = merger.Merge(head.Id, other.Id); NUnit.Framework.Assert.IsFalse(merger.GetFailingPaths().IsEmpty()); NUnit.Framework.Assert.IsFalse(ok); }
public virtual void CheckMergeEqualTreesInCore(MergeStrategy strategy) { Git git = Git.Wrap(db); WriteTrashFile("d/1", "orig"); git.Add().AddFilepattern("d/1").Call(); RevCommit first = git.Commit().SetMessage("added d/1").Call(); WriteTrashFile("d/1", "modified"); RevCommit masterCommit = git.Commit().SetAll(true).SetMessage("modified d/1 on master" ).Call(); git.Checkout().SetCreateBranch(true).SetStartPoint(first).SetName("side").Call(); WriteTrashFile("d/1", "modified"); RevCommit sideCommit = git.Commit().SetAll(true).SetMessage("modified d/1 on side" ).Call(); git.Rm().AddFilepattern("d/1").Call(); git.Rm().AddFilepattern("d").Call(); ThreeWayMerger resolveMerger = (ThreeWayMerger)strategy.NewMerger(db, true); bool noProblems = resolveMerger.Merge(masterCommit, sideCommit); NUnit.Framework.Assert.IsTrue(noProblems); }