예제 #1
0
        public virtual void RetrieveSource(IPackageTree packageTree)
        {
            if (downloadedPackages.ContainsKey(packageTree.Name))
            {
                return;
            }

            if (!ShouldUpdate(packageTree))
            {
                downloadedPackages.Add(packageTree.Name, packageTree.Name);
                return;
            }

            var revisionData = packageTree.GetRevisionData();

            Initialise(packageTree);

            SetMonitor(packageTree.WorkingDirectory.FullName);

            Thread monitoringThread = StartMonitoring();

            var revision = Download(packageTree, packageTree.WorkingDirectory, revisionData.Operation());

            StopMonitoring(monitoringThread);

            RecordCurrentRevision(packageTree, revision);
        }
예제 #2
0
        public virtual bool ShouldUpdate(IPackageTree packageTree)
        {
            string currentRevision = packageTree.GetRevisionData().Revision;

            if (currentRevision == "0")
            {
                log.InfoFormat("Empty Repository");
                return(true);
            }

            return(ShouldUpdate(currentRevision, packageTree));
        }
예제 #3
0
 protected virtual void RecordCurrentRevision(IPackageTree tree, string revision)
 {
     tree.GetRevisionData().RecordRevision(tree, revision);
 }
예제 #4
0
 protected override void Because()
 {
     revisionData = package.GetRevisionData();
 }