From e7ad4a9c3c9d383d1df52410e18808174f7be667 Mon Sep 17 00:00:00 2001 From: Nicolas Pitre Date: Fri, 10 Feb 2006 10:20:40 -0500 Subject: [PATCH 1/3] count-delta.c: comment fixes There was a stale comment that explains why the old code could undercount when delta data copied things around inside detination buffer. We do not use that kind of delta, so the comment does not apply. --- count-delta.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/count-delta.c b/count-delta.c index 978a60ca9d..058a2aadb1 100644 --- a/count-delta.c +++ b/count-delta.c @@ -16,11 +16,7 @@ * * Number of bytes that are _not_ copied from the source is deletion, * and number of inserted literal bytes are addition, so sum of them - * is the extent of damage. xdelta can express an edit that copies - * data inside of the destination which originally came from the - * source. We do not count that in the following routine, so we are - * undercounting the source material that remains in the final output - * that way. + * is the extent of damage. */ int count_delta(void *delta_buf, unsigned long delta_size, unsigned long *src_copied, unsigned long *literal_added) From 39556fbdadaacf67330bc1464e0172468e9c3a5e Mon Sep 17 00:00:00 2001 From: Nicolas Pitre Date: Fri, 10 Feb 2006 13:42:05 -0500 Subject: [PATCH 2/3] delta micro optimization My kernel work habit made me look at the generated assembly for the delta code, and one obvious albeit small improvement is this patch. Signed-off-by: Nicolas Pitre Signed-off-by: Junio C Hamano --- delta.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/delta.h b/delta.h index 31d1820f80..a15350dabc 100644 --- a/delta.h +++ b/delta.h @@ -19,14 +19,14 @@ extern void *patch_delta(void *src_buf, unsigned long src_size, static inline unsigned long get_delta_hdr_size(const unsigned char **datap) { const unsigned char *data = *datap; - unsigned char cmd = *data++; - unsigned long size = cmd & ~0x80; - int i = 7; - while (cmd & 0x80) { + unsigned char cmd; + unsigned long size = 0; + int i = 0; + do { cmd = *data++; size |= (cmd & ~0x80) << i; i += 7; - } + } while (cmd & 0x80); *datap = data; return size; } From 9da5c2f0d7e99eca46ce12bfe08755b30f2bdd30 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 10 Feb 2006 11:56:42 -0800 Subject: [PATCH 3/3] rev-list: default to abbreviate merge parent names under --pretty. When we prettyprint commit log messages, merge parent names were often very long and there was no way to abbreviate it. This changes them to be abbreviated by default, and non-default abbreviations can be specified with --no-abbrev or --abbrev= options. Note that this affects only the prettyprinted parent names. The output from --show-parents is meant for machine consumption and is not affected by this flag. --- rev-list.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/rev-list.c b/rev-list.c index a554e07396..63391fc113 100644 --- a/rev-list.c +++ b/rev-list.c @@ -32,6 +32,7 @@ static const char rev_list_usage[] = " --objects\n" " --unpacked\n" " --header | --pretty\n" +" --abbrev=nr | --no-abbrev\n" " special purpose:\n" " --bisect" ; @@ -43,6 +44,7 @@ static int tag_objects = 0; static int tree_objects = 0; static int blob_objects = 0; static int verbose_header = 0; +static int abbrev = DEFAULT_ABBREV; static int show_parents = 0; static int hdr_termination = 0; static const char *commit_prefix = ""; @@ -96,7 +98,7 @@ static void show_commit(struct commit *commit) if (verbose_header) { static char pretty_header[16384]; - pretty_print_commit(commit_format, commit, ~0, pretty_header, sizeof(pretty_header), 0); + pretty_print_commit(commit_format, commit, ~0, pretty_header, sizeof(pretty_header), abbrev); printf("%s%c", pretty_header, hdr_termination); } fflush(stdout); @@ -795,6 +797,18 @@ int main(int argc, const char **argv) verbose_header = 1; continue; } + if (!strcmp(arg, "--no-abbrev")) { + abbrev = 0; + continue; + } + if (!strncmp(arg, "--abbrev=", 9)) { + abbrev = strtoul(arg + 9, NULL, 10); + if (abbrev && abbrev < MINIMUM_ABBREV) + abbrev = MINIMUM_ABBREV; + else if (40 < abbrev) + abbrev = 40; + continue; + } if (!strncmp(arg, "--pretty", 8)) { commit_format = get_commit_format(arg+8); verbose_header = 1;