summaryrefslogtreecommitdiff
path: root/log-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-12-13 13:28:54 -0800
committerJunio C Hamano <gitster@pobox.com>2017-12-13 13:28:54 -0800
commit6c3daa23461333c508c41faa532c6fb749cd0db0 (patch)
tree0d480e7fae2e4d975e317b22f99d668bac436fbe /log-tree.c
parent721cc4314cb593e799213ad5f926a1e9fc5779b0 (diff)
parent65516f586b69307f977cd67cc45513a296cabc25 (diff)
Merge branch 'ra/decorate-limit-refs'
The tagnames "git log --decorate" uses to annotate the commits can now be limited to subset of available refs with the two additional options, --decorate-refs[-exclude]=<pattern>. * ra/decorate-limit-refs: log: add option to choose which refs to decorate
Diffstat (limited to 'log-tree.c')
-rw-r--r--log-tree.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/log-tree.c b/log-tree.c
index 3b904f0375..fca29d4799 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -94,8 +94,12 @@ static int add_ref_decoration(const char *refname, const struct object_id *oid,
{
struct object *obj;
enum decoration_type type = DECORATION_NONE;
+ struct decoration_filter *filter = (struct decoration_filter *)cb_data;
- assert(cb_data == NULL);
+ if (filter && !ref_filter_match(refname,
+ filter->include_ref_pattern,
+ filter->exclude_ref_pattern))
+ return 0;
if (starts_with(refname, git_replace_ref_base)) {
struct object_id original_oid;
@@ -148,15 +152,23 @@ static int add_graft_decoration(const struct commit_graft *graft, void *cb_data)
return 0;
}
-void load_ref_decorations(int flags)
+void load_ref_decorations(struct decoration_filter *filter, int flags)
{
if (!decoration_loaded) {
-
+ if (filter) {
+ struct string_list_item *item;
+ for_each_string_list_item(item, filter->exclude_ref_pattern) {
+ normalize_glob_ref(item, NULL, item->string);
+ }
+ for_each_string_list_item(item, filter->include_ref_pattern) {
+ normalize_glob_ref(item, NULL, item->string);
+ }
+ }
decoration_loaded = 1;
decoration_flags = flags;
- for_each_ref(add_ref_decoration, NULL);
- head_ref(add_ref_decoration, NULL);
- for_each_commit_graft(add_graft_decoration, NULL);
+ for_each_ref(add_ref_decoration, filter);
+ head_ref(add_ref_decoration, filter);
+ for_each_commit_graft(add_graft_decoration, filter);
}
}