void CFullHistory::AnalyzeRevisionData() { // special case: empty log if (headRevision == NO_REVISION) return; // we don't have a peg revision yet, set it to HEAD if (pegRevision == NO_REVISION) pegRevision = headRevision; // in case our path was renamed and had a different name in the past, // we have to find out that name now, because we will analyze the data // from lower to higher revisions startPath.reset (new CDictionaryBasedTempPath (*wcPath)); CCopyFollowingLogIterator iterator (cache, pegRevision, *startPath); iterator.Retry(); startRevision = pegRevision; while ((iterator.GetRevision() > 0) && !iterator.EndOfPath()) { if (iterator.DataIsMissing()) { iterator.ToNextAvailableData(); } else { startRevision = iterator.GetRevision(); iterator.Advance(); } } *startPath = iterator.GetAddPath(); }