]> git.ipfire.org Git - thirdparty/git.git/commitdiff
name-rev: cleanup name_ref()
authorSZEDER Gábor <szeder.dev@gmail.com>
Mon, 9 Dec 2019 11:52:58 +0000 (12:52 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Dec 2019 21:33:01 +0000 (13:33 -0800)
Earlier patches in this series moved a couple of conditions from the
recursive name_rev() function into its caller name_ref(), for no other
reason than to make eliminating the recursion a bit easier to follow.

Since the previous patch name_rev() is not recursive anymore, so let's
move all those conditions back into name_rev().

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/name-rev.c

index a3b796eac45244df80bf9759caab7066ade44ff7..cc488ee319d96ae7c5bfd60c6fde4f6dabddeb3e 100644 (file)
@@ -107,12 +107,26 @@ copy_data:
 
 static void name_rev(struct commit *start_commit,
                const char *tip_name, timestamp_t taggerdate,
-               int from_tag)
+               int from_tag, int deref)
 {
        struct prio_queue queue;
        struct commit *commit;
        struct commit **parents_to_queue = NULL;
        size_t parents_to_queue_nr, parents_to_queue_alloc = 0;
+       char *to_free = NULL;
+
+       parse_commit(start_commit);
+       if (start_commit->date < cutoff)
+               return;
+
+       if (deref)
+               tip_name = to_free = xstrfmt("%s^0", tip_name);
+
+       if (!create_or_update_name(start_commit, tip_name, taggerdate, 0, 0,
+                                  from_tag)) {
+               free(to_free);
+               return;
+       }
 
        memset(&queue, 0, sizeof(queue)); /* Use the prio_queue as LIFO */
        prio_queue_put(&queue, start_commit);
@@ -309,20 +323,7 @@ static int name_ref(const char *path, const struct object_id *oid, int flags, vo
                if (taggerdate == TIME_MAX)
                        taggerdate = commit->date;
                path = name_ref_abbrev(path, can_abbreviate_output);
-               if (commit->date >= cutoff) {
-                       const char *tip_name;
-                       char *to_free = NULL;
-                       if (deref)
-                               tip_name = to_free = xstrfmt("%s^0", path);
-                       else
-                               tip_name = xstrdup(path);
-                       if (create_or_update_name(commit, tip_name, taggerdate,
-                                                 0, 0, from_tag))
-                               name_rev(commit, tip_name, taggerdate,
-                                        from_tag);
-                       else
-                               free(to_free);
-               }
+               name_rev(commit, xstrdup(path), taggerdate, from_tag, deref);
        }
        return 0;
 }