X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=name-rev.c;h=bad8a5377771e678624d01895ca0603070d6bede;hb=fb6a9f93d39e4e5fdb83673a927f71a34e9fb7c0;hp=59194f1349ff4df860dd9ee4a3f183e17b72b6fc;hpb=72e5890b68e7199d92620d3bba91fa36dd259404;p=git.git diff --git a/name-rev.c b/name-rev.c index 59194f13..bad8a537 100644 --- a/name-rev.c +++ b/name-rev.c @@ -21,7 +21,7 @@ static void name_rev(struct commit *commit, { struct rev_name *name = (struct rev_name *)commit->object.util; struct commit_list *parents; - int parent_number = 0; + int parent_number = 1; if (!commit->object.parsed) parse_commit(commit); @@ -56,7 +56,7 @@ copy_data: for (parents = commit->parents; parents; parents = parents->next, parent_number++) { - if (parent_number > 0) { + if (parent_number > 1) { char *new_name = xmalloc(strlen(tip_name)+8); if (generation > 0) @@ -93,10 +93,11 @@ static int name_ref(const char *path, const unsigned char *sha1) } if (o && o->type == commit_type) { struct commit *commit = (struct commit *)o; - const char *p; - while ((p = strchr(path, '/'))) - path = p+1; + if (!strncmp(path, "refs/heads/", 11)) + path = path + 11; + else if (!strncmp(path, "refs/", 5)) + path = path + 5; name_rev(commit, strdup(path), 0, 0, deref); } @@ -126,6 +127,7 @@ int main(int argc, char **argv) int as_is = 0, all = 0, transform_stdin = 0; setup_git_directory(); + git_config(git_default_config); if (argc < 2) usage(name_rev_usage); @@ -217,10 +219,9 @@ int main(int argc, char **argv) if (!strcmp(name, "undefined")) continue; - fwrite(p_start, p - p_start, 1, stdout); - fputc('(', stdout); - fputs(name, stdout); - fputc(')', stdout); + fwrite(p_start, p - p_start + 1, 1, + stdout); + printf(" (%s)", name); p_start = p + 1; } } @@ -230,13 +231,12 @@ int main(int argc, char **argv) fwrite(p_start, p - p_start, 1, stdout); } } else if (all) { - extern struct object **objs; - extern int nr_objs; int i; - for (i = 0; i < nr_objs; i++) - printf("%s %s\n", sha1_to_hex(objs[i]->sha1), - get_rev_name(objs[i])); + for (i = 0; i < obj_allocs; i++) + if (objs[i]) + printf("%s %s\n", sha1_to_hex(objs[i]->sha1), + get_rev_name(objs[i])); } else for ( ; revs; revs = revs->next) printf("%s %s\n", revs->name, get_rev_name(revs->item));