Jeff King [off-list ref] writes:
This uses for_each_ref to re-find the list of commits we touched in our
traversal, which feels a little hacky. prepare_revision_walk already
generates the exact list of tips, but unfortunately writes it
into revs->commits, which then gets munged by limit_list in the second
half of prepare_revision_walk. I wonder if it should keep a copy
elsewhere in revs...
There is a precedence in merge-bases codepath that tries to be reusable by
doing its own clearing (C.f. get_merge_bases_many() and its use of cleanup
parameter). If that codepath becomes cleaner if prepare_revision_walk()
left an extra copy in revs structure, it would be a strong sign that it is
worth doing, I think.