Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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.");
        }