cset -x$REVLIST - exclude csets already included
cset -i$REVLIST - include csets previously excluded
Currently, if there were file renames, changes in permissions, like chmod +x, those are not changed.
There is a shell script started by Larry which has evolved over the years to exclude a region of the graph by rolling back to the tip of the region to be excluded, then adding a cset which restores the state of all the files at the time of the range’s lower bound. That new cset is then merged back into the current tip and any conflicts resolved.
It works pretty well and it works in nested, but it is limited because it can’t exclude 1.3 and 1.5 but leave 1.4 without running the script multiple times.
There are also inefficiencies as a script: a clone -sALL is done, to rollback all the state that needs to be rolled back. It could be done where a RESYNC is just set up directly.
In all cases, it would be good to set up a RESYNC and let smerge do its work. Smerge would need to be enhanced to understand inactive lines and detect conflict if for example, a change which altered a function is active and the change which created the function gets excluded.
And to handle meta data as best we can.