81
}
82
83
static struct rev_name *create_or_update_name(struct commit *commit,
84
- const char *tip_name,
84
timestamp_t taggerdate,
85
int generation, int distance,
86
int from_tag)
91
!is_better_name(name, taggerdate, distance, from_tag))
92
return NULL;
93
95
- name->tip_name = tip_name;
94
name->taggerdate = taggerdate;
95
name->generation = generation;
96
name->distance = distance;
128
struct commit *commit;
129
struct commit **parents_to_queue = NULL;
130
size_t parents_to_queue_nr, parents_to_queue_alloc = 0;
133
- char *to_free = NULL;
131
+ struct rev_name *start_name;
132
133
parse_commit(start_commit);
134
if (start_commit->date < cutoff)
135
return;
136
137
+ start_name = create_or_update_name(start_commit, taggerdate, 0, 0,
138
+ from_tag);
139
+ if (!start_name)
140
+ return;
141
if (deref)
140
- tip_name = to_free = xstrfmt("%s^0", tip_name);
142
+ start_name->tip_name = xstrfmt("%s^0", tip_name);
143
else
142
- tip_name = to_free = xstrdup(tip_name);
143
-
144
- if (!create_or_update_name(start_commit, tip_name, taggerdate, 0, 0,
145
- from_tag)) {
146
- free(to_free);
147
- return;
148
- }
144
+ start_name->tip_name = xstrdup(tip_name);
145
146
memset(&queue, 0, sizeof(queue)); /* Use the prio_queue as LIFO */
147
prio_queue_put(&queue, start_commit);
157
parents;
158
parents = parents->next, parent_number++) {
159
struct commit *parent = parents->item;
164
- const char *new_name;
160
+ struct rev_name *parent_name;
161
int generation, distance;
162
163
parse_commit(parent);
165
continue;
166
167
if (parent_number > 1) {
172
- new_name = get_parent_name(name, parent_number);
168
generation = 0;
169
distance = name->distance + MERGE_TRAVERSAL_WEIGHT;
170
} else {
176
- new_name = name->tip_name;
171
generation = name->generation + 1;
172
distance = name->distance + 1;
173
}
174
181
- if (create_or_update_name(parent, new_name, taggerdate,
182
- generation, distance,
183
- from_tag)) {
175
+ parent_name = create_or_update_name(parent, taggerdate,
176
+ generation,
177
+ distance, from_tag);
178
+ if (parent_name) {
179
+ if (parent_number > 1)
180
+ parent_name->tip_name =
181
+ get_parent_name(name,
182
+ parent_number);
183
+ else
184
+ parent_name->tip_name = name->tip_name;
185
ALLOC_GROW(parents_to_queue,
186
parents_to_queue_nr + 1,
187
parents_to_queue_alloc);