name-rev: refactor logic to see if a new candidate is a better name
[gitweb.git] / builtin / name-rev.c
index 8bdc3eaa6fa4472d8352e7de10ef9d816e8ca83f..7890f826ce7f061d31e0009660d01da18e5f83db 100644 (file)
@@ -20,6 +20,17 @@ static long cutoff = LONG_MAX;
 /* How many generations are maximally preferred over _one_ merge traversal? */
 #define MERGE_TRAVERSAL_WEIGHT 65535
 
+static int is_better_name(struct rev_name *name,
+                         const char *tip_name,
+                         unsigned long taggerdate,
+                         int generation,
+                         int distance)
+{
+       return (name->taggerdate > taggerdate ||
+               (name->taggerdate == taggerdate &&
+                name->distance > distance));
+}
+
 static void name_rev(struct commit *commit,
                const char *tip_name, unsigned long taggerdate,
                int generation, int distance,
@@ -45,9 +56,8 @@ static void name_rev(struct commit *commit,
                name = xmalloc(sizeof(rev_name));
                commit->util = name;
                goto copy_data;
-       } else if (name->taggerdate > taggerdate ||
-                       (name->taggerdate == taggerdate &&
-                        name->distance > distance)) {
+       } else if (is_better_name(name, tip_name, taggerdate,
+                                 generation, distance)) {
 copy_data:
                name->tip_name = tip_name;
                name->taggerdate = taggerdate;