Mike Hommey <mh@xxxxxxxxxxxx> writes: > First, revision.c doesn't come with a function to clear a struct > rev_info.... > Then, revision.c kind of does nasty things to commit objects... Yeah, these two stem from the "run once and let exit() clean things up" design the oldest part of the system shares. Regarding the latter, i.e. parent rewriting, I recall that there is a codepath that saves the original true parents away in a second field when we know we would want to show it (and avoid the overhead of copying when we do not have to), so you should be able to extend it to keep the original parent list.