From: Junio C Hamano Date: Thu, 17 Mar 2016 18:26:18 +0000 (-0700) Subject: Merge branch 'maint-2.5' into maint-2.6 X-Git-Tag: v2.6.6~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ce4d4e763c054788550625502553ced8810a7bce;p=git Merge branch 'maint-2.5' into maint-2.6 * maint-2.5: Git 2.5.5 Git 2.4.11 list-objects: pass full pathname to callbacks list-objects: drop name_path entirely list-objects: convert name_path to a strbuf show_object_with_name: simplify by using path_name() http-push: stop using name_path tree-diff: catch integer overflow in combine_diff_path allocation add helpers for detecting size_t overflow --- ce4d4e763c054788550625502553ced8810a7bce diff --cc Documentation/git.txt index 66681723f2,fe5fefe230..0e397f41ed --- a/Documentation/git.txt +++ b/Documentation/git.txt @@@ -43,19 -43,10 +43,20 @@@ unreleased) version of Git, that is ava branch of the `git.git` repository. Documentation for older releases are available here: +* link:v2.6.5/git.html[documentation for release 2.6.5] + +* release notes for + link:RelNotes/2.6.5.txt[2.6.5], + link:RelNotes/2.6.4.txt[2.6.4], + link:RelNotes/2.6.3.txt[2.6.3], + link:RelNotes/2.6.2.txt[2.6.2], + link:RelNotes/2.6.1.txt[2.6.1], + link:RelNotes/2.6.0.txt[2.6]. + - * link:v2.5.4/git.html[documentation for release 2.5.4] + * link:v2.5.5/git.html[documentation for release 2.5.5] * release notes for + link:RelNotes/2.5.5.txt[2.5.5], link:RelNotes/2.5.4.txt[2.5.4], link:RelNotes/2.5.3.txt[2.5.3], link:RelNotes/2.5.2.txt[2.5.2], diff --cc revision.c index e0107738b7,8f30ab1e46..8435ce5256 --- a/revision.c +++ b/revision.c @@@ -22,72 -21,13 +22,16 @@@ volatile show_early_output_fn_t show_early_output; +static const char *term_bad; +static const char *term_good; + - char *path_name(const struct name_path *path, const char *name) + void show_object_with_name(FILE *out, struct object *obj, const char *name) { - const struct name_path *p; - char *n, *m; - int nlen = strlen(name); - int len = nlen + 1; - - for (p = path; p; p = p->up) { - if (p->elem_len) - len += p->elem_len + 1; - } - n = xmalloc(len); - m = n + len - (nlen + 1); - strcpy(m, name); - for (p = path; p; p = p->up) { - if (p->elem_len) { - m -= p->elem_len + 1; - memcpy(m, p->elem, p->elem_len); - m[p->elem_len] = '/'; - } - } - return n; - } - - static int show_path_component_truncated(FILE *out, const char *name, int len) - { - int cnt; - for (cnt = 0; cnt < len; cnt++) { - int ch = name[cnt]; - if (!ch || ch == '\n') - return -1; - fputc(ch, out); - } - return len; - } - - static int show_path_truncated(FILE *out, const struct name_path *path) - { - int emitted, ours; - - if (!path) - return 0; - emitted = show_path_truncated(out, path->up); - if (emitted < 0) - return emitted; - if (emitted) - fputc('/', out); - ours = show_path_component_truncated(out, path->elem, path->elem_len); - if (ours < 0) - return ours; - return ours || emitted; - } - - void show_object_with_name(FILE *out, struct object *obj, - const struct name_path *path, const char *component) - { - struct name_path leaf; - leaf.up = (struct name_path *)path; - leaf.elem = component; - leaf.elem_len = strlen(component); + const char *p; fprintf(out, "%s ", sha1_to_hex(obj->sha1)); - show_path_truncated(out, &leaf); + for (p = name; *p && *p != '\n'; p++) + fputc(*p, out); fputc('\n', out); }