Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes: > But this patch is small and simple, and has some excuses for its > behavior. What do people think? I like it that you call it "excuse" not "rationale", as I couldn't form a logical connection between your "4 (2) letters" and "10000 (100)" at all ;-) Modulo the usual style issues (e.g. we frown upon patches in attachement that makes it harder to quote and comment), I think this is a strict improvement and is a good measure until somebody does a full "topologically closest" solution. > Linus > > builtin/name-rev.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/builtin/name-rev.c b/builtin/name-rev.c > index 092e03c3cc9b..0354c8d222e1 100644 > --- a/builtin/name-rev.c > +++ b/builtin/name-rev.c > @@ -16,9 +16,6 @@ typedef struct rev_name { > > static long cutoff = LONG_MAX; > > -/* How many generations are maximally preferred over _one_ merge traversal? */ > -#define MERGE_TRAVERSAL_WEIGHT 65535 > - > static void name_rev(struct commit *commit, > const char *tip_name, int generation, int distance, > int deref) > @@ -55,19 +52,26 @@ copy_data: > parents; > parents = parents->next, parent_number++) { > if (parent_number > 1) { > + int weight; > size_t len; > char *new_name; > > strip_suffix(tip_name, "^0", &len); > - if (generation > 0) > + > + // The extra merge traversal "weight" depends > + // on how complex the resulting name is. > + if (generation > 0) { > + weight = 10000; > new_name = xstrfmt("%.*s~%d^%d", (int)len, tip_name, > generation, parent_number); > - else > + } else { > + weight = 100; > new_name = xstrfmt("%.*s^%d", (int)len, tip_name, > parent_number); > + } > > name_rev(parents->item, new_name, 0, > - distance + MERGE_TRAVERSAL_WEIGHT, 0); > + distance + weight, 0); > } else { > name_rev(parents->item, tip_name, generation + 1, > distance + 1, 0); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html