void CLogDataVector::updateLanes(GitRev& c, Lanes& lns, CGitHash &sha) { // we could get third argument from c.sha(), but we are in fast path here // and c.sha() involves a deep copy, so we accept a little redundancy if (lns.isEmpty()) lns.init(sha); bool isDiscontinuity; bool isFork = lns.isFork(sha, isDiscontinuity); bool isMerge = (c.ParentsCount() > 1); bool isInitial = (c.ParentsCount() == 0); if (isDiscontinuity) lns.changeActiveLane(sha); // uses previous isBoundary state lns.setBoundary(c.IsBoundary() == TRUE); // update must be here TRACE(_T("%s %d"),c.m_CommitHash.ToString(),c.IsBoundary()); if (isFork) lns.setFork(sha); if (isMerge) lns.setMerge(c.m_ParentHash); //if (c.isApplied) // lns.setApplied(); if (isInitial) lns.setInitial(); lns.getLanes(c.m_Lanes); // here lanes are snapshotted CGitHash nextSha; if( !isInitial) nextSha = c.m_ParentHash[0]; lns.nextParent(nextSha); //if (c.isApplied) // lns.afterApplied(); if (isMerge) lns.afterMerge(); if (isFork) lns.afterFork(); if (lns.isBranch()) lns.afterBranch(); // QString tmp = "", tmp2; // for (uint i = 0; i < c.lanes.count(); i++) { // tmp2.setNum(c.lanes[i]); // tmp.append(tmp2 + "-"); // } // qDebug("%s %s",tmp.latin1(), c.sha.latin1()); }
void CLogDataVector::updateLanes(GitRevLoglist& c, Lanes& lns, CGitHash& sha) { // we could get third argument from c.sha(), but we are in fast path here // and c.sha() involves a deep copy, so we accept a little redundancy if (lns.isEmpty()) lns.init(sha); bool isDiscontinuity; bool isFork = lns.isFork(sha, isDiscontinuity); bool isMerge = (c.ParentsCount() > 1); bool isInitial = (c.ParentsCount() == 0); if (isDiscontinuity) lns.changeActiveLane(sha); // uses previous isBoundary state lns.setBoundary(c.IsBoundary() == TRUE, isInitial); // update must be here TRACE(L"%s %d", static_cast<LPCTSTR>(c.m_CommitHash.ToString()), c.IsBoundary()); if (isFork) lns.setFork(sha); if (isMerge) lns.setMerge(c.m_ParentHash); //if (c.isApplied) // lns.setApplied(); if (isInitial) lns.setInitial(); lns.getLanes(c.m_Lanes); // here lanes are snapshotted CGitHash nextSha; if( !isInitial) nextSha = c.m_ParentHash[0]; lns.nextParent(nextSha); //if (c.isApplied) // lns.afterApplied(); if (isMerge) lns.afterMerge(); if (isFork) { lns.afterFork(); if (isInitial) lns.setInitial(); } if (lns.isBranch()) lns.afterBranch(); }