diff options
author | Carlos MartÃn Nieto <carlosmn@github.com> | 2017-10-29 15:32:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-29 15:32:18 +0100 |
commit | 9e3fb594d644955decd3ce815e94a8e627acf83d (patch) | |
tree | 6ccf46e8ec07e2f4a6396f888c2f0d77040bcfc6 | |
parent | 79e09e1a937155188c7e16596abd0b0c10eb3590 (diff) | |
parent | 12a888d557bf2527ca4e7b20db3c5a623a8530f2 (diff) | |
download | libgit2-9e3fb594d644955decd3ce815e94a8e627acf83d.tar.gz |
Merge pull request #4373 from cjhoward92/examples/log-show-log-size
example-log: add support for --log-size
-rw-r--r-- | PROJECTS.md | 4 | ||||
-rw-r--r-- | examples/log.c | 13 |
2 files changed, 10 insertions, 7 deletions
diff --git a/PROJECTS.md b/PROJECTS.md index f53a2e120..419fdcdfc 100644 --- a/PROJECTS.md +++ b/PROJECTS.md @@ -36,10 +36,6 @@ These are good small projects to get started with libgit2. trick to this one will be doing it in a manner that is clean and simple, but still handles the various cases correctly (e.g. `-B/70%` is apparently a legal setting). - * Implement the `--log-size` option for `examples/log.c`. I think all - the data is available, you would just need to add the code into the - `print_commit()` routine (along with a way of passing the option - into that function). * As an extension to the matching idea for `examples/log.c`, add the `-i` option to use `strcasestr()` for matches. * For `examples/log.c`, implement the `--first-parent` option now that diff --git a/examples/log.c b/examples/log.c index e54eed3ce..a107470ee 100644 --- a/examples/log.c +++ b/examples/log.c @@ -50,6 +50,7 @@ static int add_revision(struct log_state *s, const char *revstr); /** log_options holds other command line options that affect log output */ struct log_options { int show_diff; + int show_log_size; int skip, limit; int min_parents, max_parents; git_time_t before; @@ -63,7 +64,7 @@ struct log_options { static int parse_options( struct log_state *s, struct log_options *opt, int argc, char **argv); static void print_time(const git_time *intime, const char *prefix); -static void print_commit(git_commit *commit); +static void print_commit(git_commit *commit, struct log_options *opts); static int match_with_parent(git_commit *commit, int i, git_diff_options *); /** utility functions for filtering */ @@ -148,7 +149,7 @@ int main(int argc, char *argv[]) break; } - print_commit(commit); + print_commit(commit, &opt); if (opt.show_diff) { git_tree *a = NULL, *b = NULL; @@ -337,7 +338,7 @@ static void print_time(const git_time *intime, const char *prefix) } /** Helper to print a commit object. */ -static void print_commit(git_commit *commit) +static void print_commit(git_commit *commit, struct log_options *opts) { char buf[GIT_OID_HEXSZ + 1]; int i, count; @@ -347,6 +348,10 @@ static void print_commit(git_commit *commit) git_oid_tostr(buf, sizeof(buf), git_commit_id(commit)); printf("commit %s\n", buf); + if (opts->show_log_size) { + printf("log size %d\n", (int)strlen(git_commit_message(commit))); + } + if ((count = (int)git_commit_parentcount(commit)) > 1) { printf("Merge:"); for (i = 0; i < count; ++i) { @@ -470,6 +475,8 @@ static int parse_options( /** Found valid --min_parents. */; else if (!strcmp(a, "-p") || !strcmp(a, "-u") || !strcmp(a, "--patch")) opt->show_diff = 1; + else if (!strcmp(a, "--log-size")) + opt->show_log_size = 1; else usage("Unsupported argument", a); } |