From 727ff277878490f50a3acefdd1ce6a94b3c9f4c2 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 12 Apr 2005 12:35:11 -0700 Subject: [PATCH] [PATCH] rev-tree support for "in X but not in Y". To do the automated commit-mailing I need to be able to answer the question "which commits are here today but weren't yesterday"... i.e. given two commit-ids $HEAD and $YESTERDAY I want to be able to do: rev-tree $HEAD ^$YESTERDAY to list those commits which are in the tree now but weren't ancestors of yesterday's head. Yes, I could probably do this with rev-tree $HEAD $YESTERDAY | egrep -v ^[a-z0-9]*:3 but I prefer not to. --- rev-tree.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rev-tree.c b/rev-tree.c index 7669c5ed1..21598d617 100644 --- a/rev-tree.c +++ b/rev-tree.c @@ -14,6 +14,7 @@ #define SEEN 0x10000 static int show_edges = 0; +static int basemask = 0; struct parent { struct revision *parent; @@ -180,6 +181,9 @@ static int interesting(struct revision *rev) } return 0; } + if (mask & basemask) + return 0; + return 1; } @@ -214,6 +218,10 @@ int main(int argc, char **argv) continue; } + if (arg[0] == '^') { + arg++; + basemask |= 1<= MAX_COMMITS || get_sha1_hex(arg, sha1[nr])) usage("rev-tree [--edges] [--cache ] []"); parse_commit(sha1[nr]); -- 2.26.2