Better ref summary alignment in "git fetch"
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v5 Latest5 patches 4 repliesIn review
- v45 patches 11 repliesSuperseded
- v36 patches 1 replySuperseded
Earlier versions · 2
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v2 | 3 patches | 18 replies | Superseded | |
| v1 | 2 patches | 11 replies | Superseded |
Patches in v5 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/5 | git-fetch.txt: document fetch outputDocumentation/ | +46 | 0 replies | |
| 2/5 | fetch: refactor ref update status formatting codebuiltin/ | +38 | 0 replies | |
| 3/5 | fetch: change flag code for displaying tag update and deleted refDocumentation/ builtin/ | +4 | 0 replies | |
| 4/5 | fetch: align all "remote -> local" outputbuiltin/ t/ | +60 | 0 replies | |
| 5/5 | fetch: reduce duplicate in ref update status lines with placeholderDocumentation/ Documentation/ builtin/ +1 more | +102 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v5 yet.
Cover letter [PATCH v5 0/5] Better ref summary alignment in "git fetch"
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
Documentation/git-fetch.txt +4 -4
@@ -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:
builtin/fetch.c +20 -17
@@ -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);
t/t5510-fetch.sh +2 -2
@@ -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(-)
Signature · 1 line
2.8.2.531.gd073806