Skip to content

Commit

Permalink
git-rev-parse: add "--not" flag to mark subsequent heads negative
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Linus Torvalds committed Jun 26, 2005
1 parent 641e1ca commit 042a4ed
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions rev-parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ static int revs_only = 0;
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);

/*
Expand Down Expand Up @@ -42,20 +46,12 @@ static int is_rev_argument(const char *arg)
}
}

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)
Expand Down Expand Up @@ -139,7 +135,7 @@ static void show_default(void)

def = NULL;
if (!get_extended_sha1(s, sha1)) {
show_rev(sha1);
show_rev(NORMAL, sha1);
return;
}
show_arg(s);
Expand Down Expand Up @@ -185,6 +181,10 @@ int main(int argc, char **argv)
single_rev = 1;
continue;
}
if (!strcmp(arg, "--not")) {
show_type ^= REVERSED;
continue;
}
show_arg(arg);
continue;
}
Expand All @@ -200,8 +200,8 @@ int main(int argc, char **argv)
if (no_revs)
continue;
def = NULL;
show_rev(end);
show_antirev(sha1);
show_rev(NORMAL, end);
show_rev(REVERSED, sha1);
continue;
}
}
Expand All @@ -211,14 +211,14 @@ int main(int argc, char **argv)
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();
Expand Down

0 comments on commit 042a4ed

Please sign in to comment.