From: Junio C Hamano <junkio@cox.net>
To: Petr Baudis <pasky@ucw.cz>
Cc: git@vger.kernel.org
Subject: [PATCH 1/3] Introduce "rev-list --stop-at=<commit>".
Date: Thu, 12 May 2005 17:15:15 -0700 [thread overview]
Message-ID: <7v3bssc770.fsf@assigned-by-dhcp.cox.net> (raw)
Additional option, --stop-at=<commit>, is introduced. The
git-rev-list output stops just before showing the named commit.
This is based on Thoms Gleixner's patch but slightly reworked.
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
Documentation/git-rev-list.txt | 18 +++++++++++++++++-
rev-list.c | 20 ++++++++++++++++----
2 files changed, 33 insertions(+), 5 deletions(-)
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -9,7 +9,10 @@
SYNOPSIS
--------
-'git-rev-list' <commit>
+'git-rev-list' [--max-count=<number>]
+ [--max-age=<unixtime>]
+ [--min-age=<unixtime>]
+ [--stop-at=<commit>] <commit>
DESCRIPTION
-----------
@@ -17,6 +20,19 @@
given commit, taking ancestry relationship into account. This is
useful to produce human-readable log output.
+OPTIONS
+-------
+--max-count=<number>::
+ Stop after showing <number> commits.
+
+--max-age=<unixtime>::
+ Stop after showing commit made before <unixtime>.
+
+--min-age=<unixtime>::
+ Skip until commit made before <unixtime>.
+
+--stop-at=<commit>::
+ Stop just before showing <commit>.
Author
------
--- a/rev-list.c
+++ b/rev-list.c
@@ -1,12 +1,21 @@
#include "cache.h"
#include "commit.h"
+static const char *rev_list_usage =
+"usage: rev-list [OPTION] commit-id\n"
+" --max-count=nr\n"
+" --max-age=epoch\n"
+" --min-age=epoch\n"
+" --stop-at=commit\n";
+
int main(int argc, char **argv)
{
unsigned char sha1[20];
struct commit_list *list = NULL;
struct commit *commit;
char *commit_arg = NULL;
+ unsigned char stop_at[20];
+ int has_stop_at = 0;
int i;
unsigned long max_age = -1;
unsigned long min_age = -1;
@@ -21,16 +30,17 @@
max_age = atoi(arg + 10);
} else if (!strncmp(arg, "--min-age=", 10)) {
min_age = atoi(arg + 10);
+ } else if (!strncmp(arg, "--stop-at=", 10)) {
+ if (get_sha1(arg + 10, stop_at))
+ usage(rev_list_usage);
+ has_stop_at = 1;
} else {
commit_arg = arg;
}
}
if (!commit_arg || get_sha1(commit_arg, sha1))
- usage("usage: rev-list [OPTION] commit-id\n"
- " --max-count=nr\n"
- " --max-age=epoch\n"
- " --min-age=epoch\n");
+ usage(rev_list_usage);
commit = lookup_commit(sha1);
if (!commit || parse_commit(commit) < 0)
@@ -46,6 +56,8 @@
break;
if (max_count != -1 && !max_count--)
break;
+ if (has_stop_at && !memcmp(stop_at, commit->object.sha1, 20))
+ break;
printf("%s\n", sha1_to_hex(commit->object.sha1));
} while (list);
return 0;
------------------------------------------------
next reply other threads:[~2005-05-13 0:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-13 0:15 Junio C Hamano [this message]
2005-05-13 5:29 ` [PATCH 1/3] Introduce "rev-list --stop-at=<commit>" Petr Baudis
2005-05-13 6:07 ` Noel Grandin
2005-05-13 7:36 ` 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=7v3bssc770.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=git@vger.kernel.org \
--cc=pasky@ucw.cz \
/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