X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=graph.c;h=ac7c60540645761d3c99fb405a69cb2d06aaddc2;hb=3f8099fce7779631fe8827a8979d7b57629a36de;hp=e6bbcaa8c4655add3ecaca578e948355795e36ca;hpb=44e08b003d37440fba6589c07a9573df9d28e6f5;p=git.git diff --git a/graph.c b/graph.c index e6bbcaa8c..ac7c60540 100644 --- a/graph.c +++ b/graph.c @@ -211,6 +211,18 @@ struct git_graph { unsigned short default_column_color; }; +static struct strbuf *diff_output_prefix_callback(struct diff_options *opt, void *data) +{ + struct git_graph *graph = data; + static struct strbuf msgbuf = STRBUF_INIT; + + assert(graph); + + strbuf_reset(&msgbuf); + graph_padding_line(graph, &msgbuf); + return &msgbuf; +} + struct git_graph *graph_init(struct rev_info *opt) { struct git_graph *graph = xmalloc(sizeof(struct git_graph)); @@ -244,6 +256,13 @@ struct git_graph *graph_init(struct rev_info *opt) graph->mapping = xmalloc(sizeof(int) * 2 * graph->column_capacity); graph->new_mapping = xmalloc(sizeof(int) * 2 * graph->column_capacity); + /* + * The diff output prefix callback, with this we can make + * all the diff output to align with the graph lines. + */ + opt->diffopt.output_prefix = diff_output_prefix_callback; + opt->diffopt.output_prefix_data = graph; + return graph; }