Code

Add --log-size to git log to print message size
authorMarco Costalba <mcostalba@gmail.com>
Fri, 20 Jul 2007 18:15:13 +0000 (20:15 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 14 Aug 2007 08:59:33 +0000 (01:59 -0700)
With this option git-log prints log message size
just before the corresponding message.

Porcelain tools could use this to speedup parsing
of git-log output.

Note that size refers to log message only. If also
patch content is shown its size is not included.

In case it is not possible to know the size upfront
size value is set to zero.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-log.txt
log-tree.c
revision.c
revision.h

index 63c1dbe812e6078870569c0b8d03ff021e4b56a3..5a90f65b5e9d9ce21bcd0c936a01ded5065d5868 100644 (file)
@@ -64,6 +64,13 @@ include::pretty-options.txt[]
 --follow::
        Continue listing the history of a file beyond renames.
 
+--log-size::
+       Before the log message print out its size in bytes. Intended
+       mainly for porcelain tools consumption. If git is unable to
+       produce a valid value size is set to zero.
+       Note that only message is considered, if also a diff is shown
+       its size is not included.
+
 <paths>...::
        Show only commits that affect the specified paths.
 
index 8624d5a39ca3119fe7c4204a2c3b1f272a4b609d..a6423718e76be34e62bc76dcf3c93b32e38aa152 100644 (file)
@@ -295,6 +295,9 @@ void show_log(struct rev_info *opt, const char *sep)
        if (opt->add_signoff)
                len = append_signoff(&msgbuf, &msgbuf_len, len,
                                     opt->add_signoff);
+       if (opt->show_log_size)
+               printf("log size %i\n", len);
+
        printf("%s%s%s", msgbuf, extra, sep);
        free(msgbuf);
 }
index 038693caba69a9274b632510c9ee8a14a87b6eee..7d32a89b0eca858113829e9219e80ff15e66e953 100644 (file)
@@ -1150,6 +1150,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
                                        die("unknown date format %s", arg);
                                continue;
                        }
+                       if (!strcmp(arg, "--log-size")) {
+                               revs->show_log_size = 1;
+                               continue;
+                       }
 
                        /*
                         * Grepping the commit log
index f46b4d55a2c75e201b37dda8edd6d353722a96cb..98a0a8f3fa9db4b2302dd31a4867ae824831b25c 100644 (file)
@@ -81,6 +81,7 @@ struct rev_info {
        const char      *log_reencode;
        const char      *subject_prefix;
        int             no_inline;
+       int             show_log_size;
 
        /* Filter by commit log message */
        struct grep_opt *grep_filter;