From: David Woodhouse Date: Tue, 12 Apr 2005 19:35:11 +0000 (-0700) Subject: [PATCH] rev-tree support for "in X but not in Y". X-Git-Tag: v0.99~904 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=727ff277878490f50a3acefdd1ce6a94b3c9f4c2;p=git.git [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. --- diff --git a/rev-tree.c b/rev-tree.c index 7669c5ed..21598d61 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]);