v5 changes the substitute symbol from '$' to '*' in compact mode and
makes sure long lines in compact mode will not make the remote ref
column too big (it's far from perfect but I think it's still good to
do).
I'm not sure if we should bring back "{ -> origin/}foo" format. I can
do it if someone still wants it.
Interdiff
diff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt
index 61e8885..9e42169 100644
--- a/Documentation/git-fetch.txt
+++ b/Documentation/git-fetch.txt
@@ -116,10 +116,10 @@ representing the status of a single ref. Each line is of
the form:
The status of up-to-date refs is shown only if the --verbose option is
used.
-In compact output mode, if either entire `<from>` or `<to>` is found
-in the other string, it will be substituted with `$` in the other
-string. or example, `master -> origin/master` becomes
-`master -> origin/$`.
+In compact output mode, specified with configuration variable
+fetch.output, if either entire `<from>` or `<to>` is found in the
+other string, it will be substituted with `*` in the other string. For
+example, `master -> origin/master` becomes `master -> origin/*`.
flag::
A single character indicating the status of the ref:
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 9d9f4e8..0a2eed1 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -455,7 +455,7 @@ static int compact_format;
static void adjust_refcol_width(const struct ref *ref)
{
- int max, rlen, llen;
+ int max, rlen, llen, len;
/* uptodate lines are only shown on high verbosity level */
if (!verbosity && !oidcmp(&ref->peer_ref->old_oid, &ref->old_oid))
@@ -464,16 +464,6 @@ static void adjust_refcol_width(const struct ref *ref)
max = term_columns();
rlen = utf8_strwidth(prettify_refname(ref->name));
- if (compact_format) {
- /*
- * Not precise calculation because '$' can appear in
- * ref->name and reduce actual length.
- */
- if (refcol_width < rlen)
- refcol_width = rlen;
- return;
- }
-
llen = utf8_strwidth(prettify_refname(ref->peer_ref->name));
/*
@@ -482,9 +472,19 @@ static void adjust_refcol_width(const struct ref *ref)
* anyway because we don't know if the error explanation part
* will be printed in update_local_ref)
*/
- if (21 /* flag and summary */ + rlen + 4 /* -> */ + llen >= max)
+ if (compact_format) {
+ llen = 0;
+ max = max * 2 / 3;
+ }
+ len = 21 /* flag and summary */ + rlen + 4 /* -> */ + llen;
+ if (len >= max)
return;
+ /*
+ * Not precise calculation for compact mode because '*' can
+ * appear on the left hand side of '->' and shrink the column
+ * back.
+ */
if (refcol_width < rlen)
refcol_width = rlen;
}
@@ -519,7 +519,9 @@ static void print_remote_to_local(struct strbuf *display,
strbuf_addf(display, "%-*s -> %s", refcol_width, remote, local);
}
-static int dollarize(struct strbuf *haystack, const char *needle)
+static int find_and_replace(struct strbuf *haystack,
+ const char *needle,
+ const char *placeholder)
{
const char *p = strstr(haystack->buf, needle);
int plen, nlen;
@@ -535,7 +537,8 @@ static int dollarize(struct strbuf *haystack, const char
*needle)
if (plen > nlen && p[nlen] != '/')
return 0;
- strbuf_splice(haystack, p - haystack->buf, nlen, "$", 1);
+ strbuf_splice(haystack, p - haystack->buf, nlen,
+ placeholder, strlen(placeholder));
return 1;
}
@@ -546,15 +549,15 @@ static void print_compact(struct strbuf *display,
struct strbuf l = STRBUF_INIT;
if (!strcmp(remote, local)) {
- strbuf_addf(display, "%-*s -> $", refcol_width, remote);
+ strbuf_addf(display, "%-*s -> *", refcol_width, remote);
return;
}
strbuf_addstr(&r, remote);
strbuf_addstr(&l, local);
- if (!dollarize(&r, local))
- dollarize(&l, remote);
+ if (!find_and_replace(&r, local, "*"))
+ find_and_replace(&l, remote, "*");
print_remote_to_local(display, r.buf, l.buf);
strbuf_release(&r);
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index 3a92718..6032776 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -712,8 +712,8 @@ test_expect_success 'fetch compact output' '
grep -e "->" | cut -c 22- >../actual
) &&
cat >expect <<-\EOF &&
- master -> origin/$
- extraaa -> $
+ master -> origin/*
+ extraaa -> *
EOF
test_cmp expect actual
'
Nguyễn Thái Ngọc Duy (5):
git-fetch.txt: document fetch output
fetch: refactor ref update status formatting code
fetch: change flag code for displaying tag update and deleted ref
fetch: align all "remote -> local" output
fetch: reduce duplicate in ref update status lines with placeholder
Documentation/config.txt | 5 ++
Documentation/git-fetch.txt | 51 ++++++++++++
builtin/fetch.c | 197 +++++++++++++++++++++++++++++++++++---------
t/t5510-fetch.sh | 30 +++++++
4 files changed, 243 insertions(+), 40 deletions(-)
--
2.8.2.531.gd073806
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html