At first glance, wt_status_print_updated() appears to be doing a bunch of printing (as its name implies), and it may not be immediately obvious that it also sets the vital wt_status.commitable flag. Extract this out into a separate function; it is hoped that the improved clarity to future Git contributors would outweigh the performance penalty. Signed-off-by: Tay Ray Chuan <rctay89@xxxxxxxxx> --- wt-status.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/wt-status.c b/wt-status.c index a452407..9b0189c 100644 --- a/wt-status.c +++ b/wt-status.c @@ -589,6 +589,21 @@ void wt_status_collect(struct wt_status *s) wt_status_collect_untracked(s); } +void wt_status_mark_commitable(struct wt_status *s) +{ + int i; + + for (i = 0; i < s->change.nr; i++) { + struct wt_status_change_data *d; + d = s->change.items[i].util; + if (!d->index_status || + d->index_status == DIFF_STATUS_UNMERGED) + continue; + s->commitable = 1; + break; + } +} + static void wt_status_print_unmerged(struct wt_status *s) { int shown_header = 0; @@ -627,7 +642,6 @@ static void wt_status_print_updated(struct wt_status *s) continue; if (!shown_header) { wt_status_print_cached_header(s); - s->commitable = 1; shown_header = 1; } wt_status_print_change_data(s, WT_STATUS_UPDATED, it); @@ -1309,6 +1323,7 @@ void wt_status_print(struct wt_status *s) status_printf_ln(s, color(WT_STATUS_HEADER, s), ""); } + wt_status_mark_commitable(s); wt_status_print_updated(s); wt_status_print_unmerged(s); wt_status_print_changed(s); -- 1.9.0.291.g027825b -- 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