Le Wednesday 27 May 2009, Christian Couder a écrit : > Previously "git diff-tree --pretty COMMIT" was run using > "run_command_v_opt" to display information about the first bad > commit. > > The goal of this patch is to avoid a "fork" and an "exec" call > when displaying that information. > > To do that, we manually setup revision information as > "git diff-tree --pretty" would do it, and then use the > "log_tree_commit" function. > > Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> > --- > bisect.c | 30 +++++++++++++++++++++++++++--- > 1 files changed, 27 insertions(+), 3 deletions(-) > > diff --git a/bisect.c b/bisect.c > index c43c120..e94a77b 100644 > --- a/bisect.c > +++ b/bisect.c > @@ -7,6 +7,7 @@ > #include "quote.h" > #include "sha1-lookup.h" > #include "run-command.h" > +#include "log-tree.h" > #include "bisect.h" > > struct sha1_array { > @@ -27,7 +28,6 @@ struct argv_array { > int argv_alloc; > }; > > -static const char *argv_diff_tree[] = {"diff-tree", "--pretty", NULL, > NULL}; static const char *argv_checkout[] = {"checkout", "-q", NULL, > "--", NULL}; static const char *argv_show_branch[] = {"show-branch", > NULL, NULL}; > > @@ -816,6 +816,31 @@ static void check_good_are_ancestors_of_bad(const > char *prefix) } > > /* > + * This does "git diff-tree --pretty COMMIT" without one fork+exec. > + */ > +static void show_diff_tree(const char *prefix, struct commit *commit) > +{ > + static struct rev_info opt; Oops, "static" can be removed, it's a copy-paste error, sorry. Thanks, Christian. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html