public IEnumerable <IChangeReport> GetChangeRecords(Revision revision) { var changes = new List <IChangeReport>(); revision.EnsureParentRevisionInfo(); if (!revision.HasAtLeastOneParent) { //describe the contents of the initial checkin foreach (var fileInRevision in Repository.GetFilesInRevision(revision)) { CollectChangesInFile(fileInRevision, null, changes); } } else { IEnumerable <RevisionNumber> parentRevs = revision.GetLocalNumbersOfParents(); foreach (RevisionNumber parentRev in parentRevs) { foreach (var fileInRevision in Repository.GetFilesInRevision(revision) .Where(fileInRevision => parentRevs.Count() == 1 || fileInRevision.FullPath.ToLowerInvariant().EndsWith(".chorusnotes"))) { CollectChangesInFile(fileInRevision, parentRev.LocalRevisionNumber, changes); } } if (parentRevs.Count() > 1) { changes = new List <IChangeReport>(changes.Distinct()); } } return(changes); }
/// <summary> /// not called "CreateReject*Branch* because we're not naming it (but it is, technically, a branch) /// </summary> public void CreateRejectForkAndComeBack() { var originalTip = Repository.GetTip(); ChangeFile("test.txt", "bad"); var options = new SyncOptions { DoMergeWithOthers = true, DoPullFromOthers = true, DoSendToOthers = true }; Synchronizer = CreateSynchronizer(); Synchronizer.SyncNow(options); var badRev = Repository.GetTip(); //notice that we're putting changeset which does the tagging over on the original branch Repository.RollbackWorkingDirectoryToRevision(originalTip.Number.Hash); Repository.TagRevision(badRev.Number.Hash, Synchronizer.RejectTagSubstring); // this adds a new changeset Synchronizer.SyncNow(options); Revision revision = Repository.GetRevisionWorkingSetIsBasedOn(); revision.EnsureParentRevisionInfo(); Assert.AreEqual(originalTip.Number.LocalRevisionNumber, revision.Parents[0].LocalRevisionNumber, "Should have moved back to original tip."); }