aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Costalba <mcostalba@gmail.com>2007-07-20 20:15:13 +0200
committerJunio C Hamano <gitster@pobox.com>2007-08-14 01:59:33 -0700
commit9fa3465d6be83c08ed24762c82eb33cb005729f3 (patch)
tree04e80313bc65786cd64042d4f25326fe444cf3bd
parentfb13227e089f22dc31a3b1624559153821056848 (diff)
downloadgit-9fa3465d6be83c08ed24762c82eb33cb005729f3.tar.gz
git-9fa3465d6be83c08ed24762c82eb33cb005729f3.tar.xz
Add --log-size to git log to print message size
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>
-rw-r--r--Documentation/git-log.txt7
-rw-r--r--log-tree.c3
-rw-r--r--revision.c4
-rw-r--r--revision.h1
4 files changed, 15 insertions, 0 deletions
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index 63c1dbe81..5a90f65b5 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -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.
diff --git a/log-tree.c b/log-tree.c
index 8624d5a39..a6423718e 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -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);
}
diff --git a/revision.c b/revision.c
index 038693cab..7d32a89b0 100644
--- a/revision.c
+++ b/revision.c
@@ -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
diff --git a/revision.h b/revision.h
index f46b4d55a..98a0a8f3f 100644
--- a/revision.h
+++ b/revision.h
@@ -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;