name-rev: extract creating/updating a 'struct name_rev' into a helper
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>
SZEDER Gábor committed
Nov 12, 2019 at 11:38 UTC
766f9e39c007f527c5ab63d65a0d8ff9d36e2a2e
1 file changed
+27
-13
builtin/name-rev.c
+27
-13
@@ -79,12 +79,36 @@ static int is_better_name(struct rev_name *name,
79
return 0;
80
}
81
82
+static struct rev_name *create_or_update_name(struct commit *commit,
83
+ const char *tip_name,
84
+ timestamp_t taggerdate,
85
+ int generation, int distance,
86
+ int from_tag)
87
+{
88
+ struct rev_name *name = get_commit_rev_name(commit);
89
+
90
+ if (name == NULL) {
91
+ name = xmalloc(sizeof(*name));
92
+ set_commit_rev_name(commit, name);
93
+ goto copy_data;
94
+ } else if (is_better_name(name, taggerdate, distance, from_tag)) {
95
+copy_data:
96
+ name->tip_name = tip_name;
97
+ name->taggerdate = taggerdate;
98
+ name->generation = generation;
99
+ name->distance = distance;
100
+ name->from_tag = from_tag;
101
+
102
+ return name;
103
+ } else
104
+ return NULL;
105
+}
106
+
107
static void name_rev(struct commit *commit,
108
const char *tip_name, timestamp_t taggerdate,
109
int generation, int distance, int from_tag,
110
int deref)
111
{
87
- struct rev_name *name = get_commit_rev_name(commit);
112
struct commit_list *parents;
113
int parent_number = 1;
114
char *to_free = NULL;
@@ -101,18 +125,8 @@ static void name_rev(struct commit *commit,
125
die("generation: %d, but deref?", generation);
126
}
127
104
- if (name == NULL) {
105
- name = xmalloc(sizeof(*name));
106
- set_commit_rev_name(commit, name);
107
- goto copy_data;
108
- } else if (is_better_name(name, taggerdate, distance, from_tag)) {
109
-copy_data:
110
- name->tip_name = tip_name;
111
- name->taggerdate = taggerdate;
112
- name->generation = generation;
113
- name->distance = distance;
114
- name->from_tag = from_tag;
115
- } else {
128
+ if (!create_or_update_name(commit, tip_name, taggerdate, generation,
129
+ distance, from_tag)) {
130
free(to_free);
131
return;
132
}