Merge branch 'jh/status-aheadbehind'

"git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.

* jh/status-aheadbehind:
  status: ignore status.aheadbehind in porcelain formats
  status: warn when a/b calculation takes too long
  status: add status.aheadbehind setting
This commit is contained in:
Junio C Hamano
2019-07-09 15:25:46 -07:00
8 changed files with 88 additions and 1 deletions

View File

@ -19,6 +19,8 @@
#include "lockfile.h"
#include "sequencer.h"
#define AB_DELAY_WARNING_IN_MS (2 * 1000)
static const char cut_line[] =
"------------------------ >8 ------------------------\n";
@ -1097,14 +1099,29 @@ static void wt_longstatus_print_tracking(struct wt_status *s)
struct branch *branch;
char comment_line_string[3];
int i;
uint64_t t_begin = 0;
assert(s->branch && !s->is_initial);
if (!skip_prefix(s->branch, "refs/heads/", &branch_name))
return;
branch = branch_get(branch_name);
t_begin = getnanotime();
if (!format_tracking_info(branch, &sb, s->ahead_behind_flags))
return;
if (advice_status_ahead_behind_warning &&
s->ahead_behind_flags == AHEAD_BEHIND_FULL) {
uint64_t t_delta_in_ms = (getnanotime() - t_begin) / 1000000;
if (t_delta_in_ms > AB_DELAY_WARNING_IN_MS) {
strbuf_addf(&sb, _("\n"
"It took %.2f seconds to compute the branch ahead/behind values.\n"
"You can use '--no-ahead-behind' to avoid this.\n"),
t_delta_in_ms / 1000.0);
}
}
i = 0;
if (s->display_comment_prefix) {
comment_line_string[i++] = comment_line_char;