X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=revision.c;h=d7678cfab4b18082bacee706cb119018b39643a0;hb=5cdeae71ea7330c08cf96b581e2c7696949e3840;hp=01386ed6d476a80e9ee8e3afe354be20caad67b3;hpb=8efdc326c9681e814d79e8da6097c187388dc0c4;p=git.git diff --git a/revision.c b/revision.c index 01386ed6..d7678cfa 100644 --- a/revision.c +++ b/revision.c @@ -313,8 +313,16 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) case REV_TREE_NEW: if (revs->remove_empty_trees && rev_same_tree_as_empty(p->tree)) { - *pp = parent->next; - continue; + /* We are adding all the specified + * paths from this parent, so the + * history beyond this parent is not + * interesting. Remove its parents + * (they are grandparents for us). + * IOW, we pretend this parent is a + * "root" commit. + */ + parse_commit(p); + p->parents = NULL; } /* fallthrough */ case REV_TREE_DIFFERENT: @@ -579,7 +587,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch revs->remove_empty_trees = 1; continue; } - if (!strncmp(arg, "--no-merges", 11)) { + if (!strcmp(arg, "--no-merges")) { revs->no_merges = 1; continue; } @@ -641,7 +649,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch /* If we didn't have a "--", all filenames must exist */ for (j = i; j < argc; j++) { if (lstat(argv[j], &st) < 0) - die("'%s': %s", arg, strerror(errno)); + die("'%s': %s", argv[j], strerror(errno)); } revs->prune_data = get_pathspec(revs->prefix, argv + i); break;