From 11fd66de9bceac5ffb70ad3ad225203b95d19aa2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 21 Oct 2016 15:28:07 -0700 Subject: transport: allow summary-width to be computed dynamically Now we have identified three callchains that have a set of refs that they want to show their object names in an aligned output, we can replace their reference to the constant TRANSPORT_SUMMARY_WIDTH with a helper function call to transport_summary_width() that takes the set of ref as a parameter. This step does not yet iterate over the refs and compute, which is left as an exercise to the readers. Signed-off-by: Junio C Hamano --- builtin/fetch.c | 4 ++-- transport.c | 7 ++++++- transport.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/builtin/fetch.c b/builtin/fetch.c index 40696e5338..09813cd826 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -722,7 +722,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, char *url; const char *filename = dry_run ? "/dev/null" : git_path_fetch_head(); int want_status; - int summary_width = TRANSPORT_SUMMARY_WIDTH; + int summary_width = transport_summary_width(ref_map); fp = fopen(filename, "a"); if (!fp) @@ -906,7 +906,7 @@ static int prune_refs(struct refspec *refs, int ref_count, struct ref *ref_map, int url_len, i, result = 0; struct ref *ref, *stale_refs = get_stale_heads(refs, ref_count, ref_map); char *url; - int summary_width = TRANSPORT_SUMMARY_WIDTH; + int summary_width = transport_summary_width(stale_refs); const char *dangling_msg = dry_run ? _(" (%s will become dangling)") : _(" (%s has become dangling)"); diff --git a/transport.c b/transport.c index ec02b78924..d4b8bf5f25 100644 --- a/transport.c +++ b/transport.c @@ -429,6 +429,11 @@ static int print_one_push_status(struct ref *ref, const char *dest, int count, return 1; } +int transport_summary_width(const struct ref *refs) +{ + return (2 * FALLBACK_DEFAULT_ABBREV + 3); +} + void transport_print_push_status(const char *dest, struct ref *refs, int verbose, int porcelain, unsigned int *reject_reasons) { @@ -436,7 +441,7 @@ void transport_print_push_status(const char *dest, struct ref *refs, int n = 0; unsigned char head_sha1[20]; char *head; - int summary_width = TRANSPORT_SUMMARY_WIDTH; + int summary_width = transport_summary_width(refs); head = resolve_refdup("HEAD", RESOLVE_REF_READING, head_sha1, NULL); diff --git a/transport.h b/transport.h index e783377e40..706d99e818 100644 --- a/transport.h +++ b/transport.h @@ -142,7 +142,7 @@ struct transport { #define TRANSPORT_PUSH_ATOMIC 8192 #define TRANSPORT_PUSH_OPTIONS 16384 -#define TRANSPORT_SUMMARY_WIDTH (2 * FALLBACK_DEFAULT_ABBREV + 3) +extern int transport_summary_width(const struct ref *refs); /* Returns a transport suitable for the url */ struct transport *transport_get(struct remote *, const char *); -- cgit v1.2.3