-
Notifications
You must be signed in to change notification settings - Fork 16
Description
First off: I'm aware that this repo is not actively maintained, I just wanted to publish my findings in this issue and a PR including my fixes to help others in the same situation.
I am working with a somewhat unconventional AccuRev depot structure that makes heavy use of pass-through streams and the exclude feature to maintain multiple applications in one big depot. Some of these applications share no code with the rest of the depot while others share a small amount. Pass-through streams are mostly used to group and structure the streams, but (critically) sometimes carry exclude information directly. A simplified and generalized example of how this looks like:
graph LR
root["`Root<br>*stream*`"] --> pt1{"`Desktop Apps<br>*pass-through*`"}
pt1 -.- excl1>"`*exclude rules for Web App elements*`"]
pt1 --> app1["`App 1<br>*stream*`"]
pt1 --> app2["`App 2<br>*stream*`"]
root --> pt2{"`Web Apps<br>*pass-through*`"}
pt2 -.- excl2>"`*exclude rules for Desktop App elements*`"]
pt2 --> lib1["`WebApp 1<br>*stream*`"]
pt2 --> lib2["`WebApp 2<br>*stream*`"]
When trying to migrate such a depot using the deep-hist method, the git trees of the resulting commits do not match the result of an accurev pop on the corresponding source transactions. The git trees often include files that had already been excluded in the accurev source stream at that point in time.
The reason for this appears to be two-fold:
- Updated ignored transaction types list #80 has introduced the
ignored_transaction_typeslist which includesdefcomp(aka "define component") which is the transaction type that results from callingaccurev excl. - Snapshots fixes and optimizations #88 has introduced a perfomance optimization based on the assumption that pass-through streams can be skipped when collecting relevant transactions using deep-hist. This is not the case for pass-through streams where exclude rules have been applied.