From: Jeff Epler <unpythonic.net@unpythonic.net>
To: git@vger.kernel.org
Cc: Jeff Epler <jepler@unpythonic.net>
Subject: [PATCH 1/2] add new output-tuning flags to 'git cherry'
Date: Fri, 29 May 2009 20:39:14 -0500 [thread overview]
Message-ID: <1243647555-25098-1-git-send-email-user@lamp> (raw)
From: Jeff Epler <jepler@unpythonic.net>
The new flags are:
-a or -##: abbreviate SHA1s to 7 or ## places
-r: reverse 'upstream' and 'head' (useful when on 'head' and wanting to
pick from 'upstream')
-d: only show "+" (doesn't have) patches
-D: only show "-" (does have) patches
Signed-off-by: Jeff Epler <jepler@unpythonic.net>
---
builtin-log.c | 54 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 44 insertions(+), 10 deletions(-)
diff --git a/builtin-log.c b/builtin-log.c
index f10cfeb..420f39e 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] [-a|-#] [-r] [-d|-D] [<upstream> [<head> [<limit>]]]";
int cmd_cherry(int argc, const char **argv, const char *prefix)
{
struct rev_info revs;
@@ -1142,9 +1142,29 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
const char *head = "HEAD";
const char *limit = NULL;
int verbose = 0;
+ int reverse = 0;
+ int abbrev = 40;
+ int show_has = 0;
+ int show_hasnt = 0;
+
+ while(argc > 1 && argv[1][0] == '-')
+ {
+ if (!strcmp(argv[1], "-v")) {
+ verbose = 1;
+ } else if(!strcmp(argv[1], "-a")) {
+ abbrev = DEFAULT_ABBREV;
+ } else if(isdigit(argv[1][1])) {
+ abbrev = atoi(argv+1);
+ } else if(!strcmp(argv[1], "-r")) {
+ reverse = 1;
+ } else if(!strcmp(argv[1], "-d")) {
+ show_hasnt = 1;
+ } else if(!strcmp(argv[1], "-D")) {
+ show_has = 1;
+ } else {
+ die("unrecognized argument: %s", argv[1]);
+ }
- if (argc > 1 && !strcmp(argv[1], "-v")) {
- verbose = 1;
argc--;
argv++;
}
@@ -1173,6 +1193,16 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
upstream = current_branch->merge[0]->dst;
}
+ if(reverse) {
+ const char *temp = upstream;
+ upstream = head;
+ head = temp;
+ }
+
+ if(!show_has && !show_hasnt) {
+ show_has = show_hasnt = 1;
+ }
+
init_revisions(&revs, prefix);
revs.diff = 1;
revs.combine_merges = 0;
@@ -1207,27 +1237,31 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
commit_list_insert(commit, &list);
}
- while (list) {
+ for (; list; list=list->next) {
char sign = '+';
+ int has;
commit = list->item;
- if (has_commit_patch_id(commit, &ids))
+
+ if ((has = has_commit_patch_id(commit, &ids))) {
sign = '-';
+ if(!show_has) continue;
+ } else {
+ if(!show_hasnt) continue;
+ }
if (verbose) {
struct strbuf buf = STRBUF_INIT;
pretty_print_commit(CMIT_FMT_ONELINE, commit,
- &buf, 0, NULL, NULL, 0, 0);
- printf("%c %s %s\n", sign,
+ &buf, 0, NULL, NULL, 0, 0);
+ 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));
}
-
- list = list->next;
}
free_patch_ids(&ids);
--
1.5.4.3
next reply other threads:[~2009-05-30 1:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-30 1:39 Jeff Epler [this message]
2009-05-30 1:39 ` [PATCH 2/2] document new flags Jeff Epler
2009-05-30 8:19 ` Jakub Narebski
2009-05-30 12:18 ` [PATCH 1/2] add new output-tuning flags to 'git cherry' Michael J Gruber
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1243647555-25098-1-git-send-email-user@lamp \
--to=unpythonic.net@unpythonic.net \
--cc=git@vger.kernel.org \
--cc=jepler@unpythonic.net \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).