summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 641e1ca)
raw | patch | inline | side by side (parent: 641e1ca)
author | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sun, 26 Jun 2005 18:34:30 +0000 (11:34 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Sun, 26 Jun 2005 18:34:30 +0000 (11:34 -0700) |
If you have two lists of heads, and you want to see ones reachable from
list $a but not from list $b, just do
git-rev-list $(git-rev-parse $a --not $b)
which is useful for both bisecting (where "b" would be the list of known
good revisions, and "a" would be the latest found bad head) and for just
seeing what the difference between two sets of heads are if you want to
generate a pack-file for the difference.
list $a but not from list $b, just do
git-rev-list $(git-rev-parse $a --not $b)
which is useful for both bisecting (where "b" would be the list of known
good revisions, and "a" would be the latest found bad head) and for just
seeing what the difference between two sets of heads are if you want to
generate a pack-file for the difference.
rev-parse.c | patch | blob | history |
diff --git a/rev-parse.c b/rev-parse.c
index 9249fa57ded416e96b51591ab6cc701720d54067..c134ffda1913082e3b38c6bee7acd3747d633ffd 100644 (file)
--- a/rev-parse.c
+++ b/rev-parse.c
static int do_rev_argument = 1;
static int output_revs = 0;
+#define NORMAL 0
+#define REVERSED 1
+static int show_type = NORMAL;
+
static int get_extended_sha1(char *name, unsigned char *sha1);
/*
}
}
-static void show_rev(unsigned char *sha1)
+static void show_rev(int type, unsigned char *sha1)
{
if (no_revs)
return;
output_revs++;
- puts(sha1_to_hex(sha1));
-}
-
-static void show_antirev(unsigned char *sha1)
-{
- if (no_revs)
- return;
- output_revs++;
- printf("^%s\n", sha1_to_hex(sha1));
+ printf("%s%s\n", type == show_type ? "" : "^", sha1_to_hex(sha1));
}
static void show_rev_arg(char *rev)
def = NULL;
if (!get_extended_sha1(s, sha1)) {
- show_rev(sha1);
+ show_rev(NORMAL, sha1);
return;
}
show_arg(s);
single_rev = 1;
continue;
}
+ if (!strcmp(arg, "--not")) {
+ show_type ^= REVERSED;
+ continue;
+ }
show_arg(arg);
continue;
}
if (no_revs)
continue;
def = NULL;
- show_rev(end);
- show_antirev(sha1);
+ show_rev(NORMAL, end);
+ show_rev(REVERSED, sha1);
continue;
}
}
if (no_revs)
continue;
def = NULL;
- show_rev(sha1);
+ show_rev(NORMAL, sha1);
continue;
}
if (*arg == '^' && !get_extended_sha1(arg+1, sha1)) {
if (no_revs)
continue;
def = NULL;
- show_antirev(sha1);
+ show_rev(REVERSED, sha1);
continue;
}
show_default();