void IndexRevisionRange(int startRevision, int stopRevision) { foreach (var data in _svn.GetRevisionData(startRevision, stopRevision)) { IndexJobData jobData = new IndexJobData(); if (!_args.SingleRevision) { jobData.Path = "$Revision " + data.Revision; jobData.RevisionFirst = data.Revision; jobData.RevisionLast = data.Revision; jobData.Info = new PathInfo(); jobData.Info.Author = data.Author; jobData.Info.Timestamp = data.Timestamp; QueueIndexJob(jobData); } data.Changes.ForEach(QueueAnalyzeJobRecursive); _pendingAnalyzeJobs.Wait(); } foreach (var job in _headJobs.Values) // no lock necessary because no analyzeJobs are running { QueueFetchJob(job); } _headJobs.Clear(); _pendingFetchJobs.Wait(); _indexQueueIsEmpty.WaitOne(); IndexProperty.SetRevision(_indexWriter, stopRevision); Console.WriteLine("Index revision is now " + stopRevision); }