On 06/04, Junio C Hamano wrote: >Ye Xiaolong <xiaolong.ye@xxxxxxxxx> writes: > >> I narrowed down the problem to revision walk, if users specify the commit range >> via "Z..C" pattern, the first prepare_revision_walk function called in >> cmd_format_patch would mark all parents (ancestors) of Z to be uninteresting, >> thus the next revision walk in prepare_bases wouldn't be able to reach >> prerequisite patches, one quick solution I can think of is to clear >> UNINTERESTING flag in reset_revision_walk, like below: >> >> void reset_revision_walk(void) >> { >> clear_object_flags(SEEN | ADDED | SHOWN| UNINTERESTING); >> } > >When you are done with objects that are UNINTERESTING in your >application (i.e. only when "format-patch" is told to compute list >of prereq patches by doing an extra revision walk), your application >can call clear_object_flags() on the flags you are done with, I >would think. > >But the current callers of reset_revision_walk() do not expect any >flags other than the ones that are used to keep track of the >traversal state, so it is likely you will break them if you suddenly >started to clear flags randomly. Got it, I'll try to call clear_object_flags in format-patch related codepatch only, not to touch the global reset_revision_walk. Thanks, Xiaolong