]> git.ipfire.org Git - thirdparty/git.git/commitdiff
name-rev: extract creating/updating a 'struct name_rev' into a helper
authorSZEDER Gábor <szeder.dev@gmail.com>
Tue, 12 Nov 2019 10:38:15 +0000 (11:38 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 Dec 2019 21:29:04 +0000 (13:29 -0800)
In a later patch in this series we'll want to do this in two places.

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

index 7e003c2702417190a72885eb6f294847d89435d4..e43df197092a9e7926b97eae18521a2c2c70cefe 100644 (file)
@@ -79,12 +79,36 @@ static int is_better_name(struct rev_name *name,
        return 0;
 }
 
+static struct rev_name *create_or_update_name(struct commit *commit,
+                                             const char *tip_name,
+                                             timestamp_t taggerdate,
+                                             int generation, int distance,
+                                             int from_tag)
+{
+       struct rev_name *name = get_commit_rev_name(commit);
+
+       if (name == NULL) {
+               name = xmalloc(sizeof(*name));
+               set_commit_rev_name(commit, name);
+               goto copy_data;
+       } else if (is_better_name(name, taggerdate, distance, from_tag)) {
+copy_data:
+               name->tip_name = tip_name;
+               name->taggerdate = taggerdate;
+               name->generation = generation;
+               name->distance = distance;
+               name->from_tag = from_tag;
+
+               return name;
+       } else
+               return NULL;
+}
+
 static void name_rev(struct commit *commit,
                const char *tip_name, timestamp_t taggerdate,
                int generation, int distance, int from_tag,
                int deref)
 {
-       struct rev_name *name = get_commit_rev_name(commit);
        struct commit_list *parents;
        int parent_number = 1;
        char *to_free = NULL;
@@ -101,18 +125,8 @@ static void name_rev(struct commit *commit,
                        die("generation: %d, but deref?", generation);
        }
 
-       if (name == NULL) {
-               name = xmalloc(sizeof(*name));
-               set_commit_rev_name(commit, name);
-               goto copy_data;
-       } else if (is_better_name(name, taggerdate, distance, from_tag)) {
-copy_data:
-               name->tip_name = tip_name;
-               name->taggerdate = taggerdate;
-               name->generation = generation;
-               name->distance = distance;
-               name->from_tag = from_tag;
-       } else {
+       if (!create_or_update_name(commit, tip_name, taggerdate, generation,
+                                  distance, from_tag)) {
                free(to_free);
                return;
        }