From: Jonathan Nieder Date: Sun, 30 May 2010 20:07:08 GMT Subject: Re: [RFC/PATCH 2/4] revert: refactor code into a do_pick_commit() function Message-ID: <20100530200708.GA32728@progeny.tock> In-Reply-To: Ramkumar Ramachandra wrote: > Christian Couder wrote: >> -static int revert_or_cherry_pick(int argc, const char **argv) >> +static int do_pick_commit() >>  { >>        unsigned char head[20]; >>        struct commit *base, *next, *parent; > > Is there a better way to do this instead of allocating memory for each > commit? When you cherry pick a lot of commits, it might make sense to > use a shared memory pool. In fact they do belong to a pool, as far as I can tell. lookup_commit_reference -> lookup_commit_reference_gently -> parse_object -> parse_object_buffer -> lookup_commit -> lookup_object (or create_object, alloc_commit_node) alloc_commit_node is defined in alloc.c to draw from a growing array of fixed-size, never-freed commit objects. Hope that helps. Jonathan