Skip to content

Commit

Permalink
name-rev: cleanup name_ref()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
szeder authored and gitster committed Dec 9, 2019
1 parent 49f7a2f commit 2866fd2
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions builtin/name-rev.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,26 @@ static struct rev_name *create_or_update_name(struct commit *commit,

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);
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 2866fd2

Please sign in to comment.