From: Jeff Epler <jepler@unpythonic.net>
To: git@vger.kernel.org
Subject: [PATCH v2] add --abbrev to 'git cherry'
Date: Sat, 30 May 2009 09:03:49 -0500 [thread overview]
Message-ID: <20090530140349.GA25265@unpythonic.net> (raw)
Abbreviating ids makes 'git cherry -v' more useful, since you can see more
of the commit message summary:
git cherry -v --abbrev | less -S
Signed-off-by: Jeff Epler <jepler@unpythonic.net>
---
An earlier version of this patch added multiple different flags to 'git
cherry', but --abbrev (was -a) is really the important one. Thanks to
Jakub Narebski and Michael J Gruber for comments on the first patch.
Documentation/git-cherry.txt | 5 ++++-
builtin-log.c | 24 +++++++++++++++++++-----
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-cherry.txt b/Documentation/git-cherry.txt
index 7deefda..5c03da0 100644
--- a/Documentation/git-cherry.txt
+++ b/Documentation/git-cherry.txt
@@ -7,7 +7,7 @@ git-cherry - Find commits not merged upstream
SYNOPSIS
--------
-'git cherry' [-v] [<upstream> [<head> [<limit>]]]
+'git cherry' [-v] [--abbrev[=<n>]] [<upstream> [<head> [<limit>]]]
DESCRIPTION
-----------
@@ -49,6 +49,9 @@ OPTIONS
-v::
Verbose.
+--abbrev[=<n>]::
+ Abbreviate commit ids to the given number of characters
+
<upstream>::
Upstream branch to compare against.
Defaults to the first tracked remote branch, if available.
diff --git a/builtin-log.c b/builtin-log.c
index f10cfeb..1f3093e 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -1130,7 +1130,7 @@ static int add_pending_commit(const char *arg, struct rev_info *revs, int flags)
}
static const char cherry_usage[] =
-"git cherry [-v] [<upstream> [<head> [<limit>]]]";
+"git cherry [-v] [--abbrev[=<n>]] [<upstream> [<head> [<limit>]]]";
int cmd_cherry(int argc, const char **argv, const char *prefix)
{
struct rev_info revs;
@@ -1142,9 +1142,23 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
const char *head = "HEAD";
const char *limit = NULL;
int verbose = 0;
+ int abbrev = 40;
+
+ while(argc > 1 && argv[1][0] == '-') {
+ if (!strcmp(argv[1], "-v")) {
+ verbose = 1;
+ } else if(!strcmp(argv[1], "--abbrev")) {
+ abbrev = DEFAULT_ABBREV;
+ } else if(!prefixcmp(argv[1], "--abbrev=")) {
+ abbrev = strtol(argv[1] + 9, NULL, 10);
+ if(abbrev < MINIMUM_ABBREV)
+ abbrev = MINIMUM_ABBREV;
+ else if(abbrev > 40)
+ abbrev = 40;
+ } else {
+ die("unrecognized argument: %s", argv[1]);
+ }
- if (argc > 1 && !strcmp(argv[1], "-v")) {
- verbose = 1;
argc--;
argv++;
}
@@ -1218,12 +1232,12 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
struct strbuf buf = STRBUF_INIT;
pretty_print_commit(CMIT_FMT_ONELINE, commit,
&buf, 0, NULL, NULL, 0, 0);
- printf("%c %s %s\n", sign,
+ printf("%c %.*s %s\n", sign, abbrev,
sha1_to_hex(commit->object.sha1), buf.buf);
strbuf_release(&buf);
}
else {
- printf("%c %s\n", sign,
+ printf("%c %.*s\n", sign, abbrev,
sha1_to_hex(commit->object.sha1));
}
--
1.5.4.3
next reply other threads:[~2009-05-30 14:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-30 14:03 Jeff Epler [this message]
2009-05-30 16:26 ` [PATCH v2] add --abbrev to 'git cherry' Markus Heidelberg
2009-05-30 16:53 ` [PATCH v3] " Jeff Epler
2009-05-30 21:13 ` Stephen Boyd
2009-05-30 23:08 ` Junio C Hamano
2009-05-30 23:44 ` Markus Heidelberg
2009-05-31 0:16 ` Junio C Hamano
2009-05-31 4:53 ` Stephen Boyd
[not found] ` <20090531133804.GB16770@unpythonic.net>
[not found] ` <7v8wkdrqys.fsf@alter.siamese.dyndns.org>
2009-06-01 11:54 ` Jeff Epler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090530140349.GA25265@unpythonic.net \
--to=jepler@unpythonic.net \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).