On Tue, Aug 18, 2009 at 04:53:45PM -0700, Junio C Hamano wrote:
Adam Simpkins [off-list ref] writes:
quoted
- return (commit->object.flags & (UNINTERESTING | TREESAME)) ? 0 : 1;
+ return simplify_commit(graph->revs, commit) == commit_show;
If you do this after revision.c finished the traversal (e.g. "limited"
case), I think it should be Ok.
But calling simplify_commit() while the traversal is still in progress is
asking for trouble. I do not recall the details anymore but when I tried
to make the "simplify-merges" algorithm incremental, I had seen funny
breakage caused by calling simplify_commit() twice on the same commit.
I suspect that this change will break the primary traversal.
The --graph option always enables revs->topo_order, which in turn
enables revs->limited, so this should always be after limit_list() has
already been called.
However, it looks like the call to rewrite_parents() is the only
modifying operation in simplify_commit(), and all the rest can easily
be split out into a separate helper function. I'll submit another
version of the patch that makes the non-modifying simplify_commit()
behavior available as a separate function.
--
Adam Simpkins
simpkins@facebook.com