From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> Extend stat_tracking_info() to return 1 when the branch is not up to date with its upstream branch and only return 0 when they are equal. Signed-off-by: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> --- ref-filter.c | 4 ++-- remote.c | 6 ++++-- wt-status.c | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ref-filter.c b/ref-filter.c index e728b15..10ab4cd 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1239,7 +1239,7 @@ static void fill_remote_ref_details(struct used_atom *atom, const char *refname, *s = show_ref(&atom->u.remote_ref.refname, refname); else if (atom->u.remote_ref.option == RR_TRACK) { if (stat_tracking_info(branch, &num_ours, - &num_theirs, NULL)) { + &num_theirs, NULL) < 0) { *s = xstrdup(msgs.gone); } else if (!num_ours && !num_theirs) *s = ""; @@ -1257,7 +1257,7 @@ static void fill_remote_ref_details(struct used_atom *atom, const char *refname, } } else if (atom->u.remote_ref.option == RR_TRACKSHORT) { if (stat_tracking_info(branch, &num_ours, - &num_theirs, NULL)) + &num_theirs, NULL) < 0) return; if (!num_ours && !num_theirs) diff --git a/remote.c b/remote.c index b220f0d..a38b42e 100644 --- a/remote.c +++ b/remote.c @@ -1983,7 +1983,9 @@ int ref_newer(const struct object_id *new_oid, const struct object_id *old_oid) * is not itself NULL. * * Returns -1 if num_ours and num_theirs could not be filled in (e.g., no - * upstream defined, or ref does not exist), 0 otherwise. + * upstream defined, or ref does not exist). + * Returns 0 if the commits are the same (the branch is up to date). + * Returns 1 if the commits are different (the branch is not up to date). */ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs, const char **upstream_name) @@ -2051,7 +2053,7 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs, clear_commit_marks(theirs, ALL_REV_FLAGS); argv_array_clear(&argv); - return 0; + return 1; } /* diff --git a/wt-status.c b/wt-status.c index 1bc53e1..471ba15 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1935,7 +1935,7 @@ static void wt_porcelain_v2_print_tracking(struct wt_status *s) base = branch_get_upstream(branch, NULL); ab_info = 0; } else { - ab_info = (stat_tracking_info(branch, &nr_ahead, &nr_behind, &base) == 0); + ab_info = (stat_tracking_info(branch, &nr_ahead, &nr_behind, &base) >= 0); } if (base) { -- 2.9.3