Skip to content

Commit 2608c24

Browse files
peffgitster
authored andcommitted
log-tree: make name_decoration hash static
In the previous commit, we made add_name_decoration global so that adders would not have to access the hash directly. We now make the hash itself static so that callers _have_ to add through our function, making sure that all additions go through a single point. To do this, we have to add one more accessor function: a way to lookup entries in the hash. Since the only caller doesn't actually look at the returned value, but rather only asks whether there is a decoration or not, we could provide only a boolean "has_name_decoration". That would allow us to make "struct name_decoration" local to log-tree, as well. However, it's unlikely to cause any maintainability harm making the actual data public, and this interface is more flexible if we need to look at decorations from other parts of the code in the future. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 662174d commit 2608c24

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

commit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ extern int save_commit_buffer;
2727
extern const char *commit_type;
2828

2929
/* While we can decorate any object with a name, it's only used for commits.. */
30-
extern struct decoration name_decoration;
3130
struct name_decoration {
3231
struct name_decoration *next;
3332
int type;
@@ -45,6 +44,7 @@ enum decoration_type {
4544
};
4645

4746
void add_name_decoration(enum decoration_type type, const char *name, struct object *obj);
47+
const struct name_decoration *get_name_decoration(const struct object *obj);
4848

4949
struct commit *lookup_commit(const unsigned char *sha1);
5050
struct commit *lookup_commit_reference(const unsigned char *sha1);

log-tree.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include "sequencer.h"
1313
#include "line-log.h"
1414

15-
struct decoration name_decoration = { "object names" };
15+
static struct decoration name_decoration = { "object names" };
1616

1717
static char decoration_colors[][COLOR_MAXLEN] = {
1818
GIT_COLOR_RESET,
@@ -83,6 +83,11 @@ void add_name_decoration(enum decoration_type type, const char *name, struct obj
8383
res->next = add_decoration(&name_decoration, obj, res);
8484
}
8585

86+
const struct name_decoration *get_name_decoration(const struct object *obj)
87+
{
88+
return lookup_decoration(&name_decoration, obj);
89+
}
90+
8691
static int add_ref_decoration(const char *refname, const unsigned char *sha1, int flags, void *cb_data)
8792
{
8893
struct object *obj;
@@ -177,13 +182,13 @@ void format_decorations(struct strbuf *sb,
177182
int use_color)
178183
{
179184
const char *prefix;
180-
struct name_decoration *decoration;
185+
const struct name_decoration *decoration;
181186
const char *color_commit =
182187
diff_get_color(use_color, DIFF_COMMIT);
183188
const char *color_reset =
184189
decorate_get_color(use_color, DECORATION_NONE);
185190

186-
decoration = lookup_decoration(&name_decoration, &commit->object);
191+
decoration = get_name_decoration(&commit->object);
187192
if (!decoration)
188193
return;
189194
prefix = " (";

revision.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ static int rev_compare_tree(struct rev_info *revs,
473473
* If we are simplifying by decoration, then the commit
474474
* is worth showing if it has a tag pointing at it.
475475
*/
476-
if (lookup_decoration(&name_decoration, &commit->object))
476+
if (get_name_decoration(&commit->object))
477477
return REV_TREE_DIFFERENT;
478478
/*
479479
* A commit that is not pointed by a tag is uninteresting

0 commit comments

Comments
 (0)