Browse Source

Prepare git-rev-list for tracking tag objects too

We want to be able to just say "give a difference between these
objects", rather than limiting it to commits only.  This isn't there
yet, but it sets things up to be a bit easier.
maint
Linus Torvalds 20 years ago
parent
commit
3c90f03d32
  1. 26
      rev-list.c

26
rev-list.c

@ -19,6 +19,7 @@ static const char rev_list_usage[] =
" --merge-order [ --show-breaks ]"; " --merge-order [ --show-breaks ]";


static int bisect_list = 0; static int bisect_list = 0;
static int tag_objects = 0;
static int tree_objects = 0; static int tree_objects = 0;
static int blob_objects = 0; static int blob_objects = 0;
static int verbose_header = 0; static int verbose_header = 0;
@ -307,6 +308,20 @@ struct commit_list *limit_list(struct commit_list *list)
return newlist; return newlist;
} }


static struct commit *get_commit_reference(const char *name, unsigned int flags)
{
unsigned char sha1[20];
struct commit *commit;

if (get_sha1(name, sha1))
usage(rev_list_usage);
commit = lookup_commit_reference(sha1);
if (!commit || parse_commit(commit) < 0)
die("bad commit object %s", name);
commit->object.flags |= flags;
return commit;
}

int main(int argc, char **argv) int main(int argc, char **argv)
{ {
struct commit_list *list = NULL; struct commit_list *list = NULL;
@ -315,7 +330,6 @@ int main(int argc, char **argv)
for (i = 1 ; i < argc; i++) { for (i = 1 ; i < argc; i++) {
int flags; int flags;
char *arg = argv[i]; char *arg = argv[i];
unsigned char sha1[20];
struct commit *commit; struct commit *commit;


if (!strncmp(arg, "--max-count=", 12)) { if (!strncmp(arg, "--max-count=", 12)) {
@ -350,6 +364,7 @@ int main(int argc, char **argv)
continue; continue;
} }
if (!strcmp(arg, "--objects")) { if (!strcmp(arg, "--objects")) {
tag_objects = 1;
tree_objects = 1; tree_objects = 1;
blob_objects = 1; blob_objects = 1;
continue; continue;
@ -369,12 +384,11 @@ int main(int argc, char **argv)
arg++; arg++;
limited = 1; limited = 1;
} }
if (get_sha1(arg, sha1) || (show_breaks && !merge_order)) if (show_breaks && !merge_order)
usage(rev_list_usage); usage(rev_list_usage);
commit = lookup_commit_reference(sha1); commit = get_commit_reference(arg, flags);
if (!commit || parse_commit(commit) < 0) if (!commit)
die("bad commit object %s", arg); continue;
commit->object.flags |= flags;
commit_list_insert(commit, &list); commit_list_insert(commit, &list);
} }



Loading…
Cancel
Save