From: Junio C Hamano <junkio@cox.net>
To: Andy Whitcroft <apw@shadowen.org>
Cc: git@vger.kernel.org
Subject: [PATCH 2/2] Teach rev-list an option to read revs from the standard input.
Date: Tue, 05 Sep 2006 21:47:08 -0700 [thread overview]
Message-ID: <7v64g1a9f7.fsf@assigned-by-dhcp.cox.net> (raw)
When --stdin option is given, in addition to the <rev>s listed
on the command line, the command can read one rev parameter per
line from the standard input. The list of revs ends at the
first empty line or EOF.
Note that you still have to give all the flags from the command
line; only rev arguments (including A..B, A...B, and A^@ notations)
can be give from the standard input.
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
Documentation/git-rev-list.txt | 6 ++++++
builtin-rev-list.c | 25 +++++++++++++++++++++++++
2 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 3c4c2fb..28966ad 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -17,6 +17,7 @@ SYNOPSIS
[ \--remove-empty ]
[ \--not ]
[ \--all ]
+ [ \--stdin ]
[ \--topo-order ]
[ \--parents ]
[ [\--objects | \--objects-edge] [ \--unpacked ] ]
@@ -171,6 +172,11 @@ limiting may be applied.
Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the
command line as '<commit>'.
+--stdin::
+
+ In addition to the '<commit>' listed on the command
+ line, read them from the standard input.
+
--merge::
After a failed merge, show refs that touch files having a
diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 8437454..8fe8afb 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c
@@ -23,6 +23,7 @@ static const char rev_list_usage[] =
" --no-merges\n"
" --remove-empty\n"
" --all\n"
+" --stdin\n"
" ordering output:\n"
" --topo-order\n"
" --date-order\n"
@@ -304,10 +305,28 @@ static void mark_edges_uninteresting(str
}
}
+static void read_revisions_from_stdin(struct rev_info *revs)
+{
+ char line[1000];
+
+ while (fgets(line, sizeof(line), stdin) != NULL) {
+ int len = strlen(line);
+ if (line[len - 1] == '\n')
+ line[--len] = 0;
+ if (!len)
+ break;
+ if (line[0] == '-')
+ die("options not supported in --stdin mode");
+ if (handle_revision_arg(line, revs, 0, 1))
+ die("bad revision '%s'", line);
+ }
+}
+
int cmd_rev_list(int argc, const char **argv, const char *prefix)
{
struct commit_list *list;
int i;
+ int read_from_stdin = 0;
init_revisions(&revs, prefix);
revs.abbrev = 0;
@@ -329,6 +348,12 @@ int cmd_rev_list(int argc, const char **
bisect_list = 1;
continue;
}
+ if (!strcmp(arg, "--stdin")) {
+ if (read_from_stdin++)
+ die("--stdin given twice?");
+ read_revisions_from_stdin(&revs);
+ continue;
+ }
usage(rev_list_usage);
}
--
1.4.2.g980c3
next reply other threads:[~2006-09-06 4:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-06 4:47 Junio C Hamano [this message]
2006-09-06 9:12 ` [PATCH 2/2] Teach rev-list an option to read revs from the standard input Jakub Narebski
2006-09-06 12:32 ` Andy Whitcroft
2006-09-06 12:40 ` [PATCH] send pack switch to using git rev list stdin v2 Andy Whitcroft
2006-09-07 0:44 ` [PATCH 2/2] Teach rev-list an option to read revs from the standard input Junio C Hamano
2006-09-07 8:11 ` Andy Whitcroft
2006-09-07 9:07 ` Junio C Hamano
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=7v64g1a9f7.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=apw@shadowen.org \
--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).