]> git.ipfire.org Git - thirdparty/git.git/blobdiff - log-tree.c
log: add log.excludeDecoration config option
[thirdparty/git.git] / log-tree.c
index fa6af69da387269a07d69cebd757eafafe24c01c..1cfd34586118c86faec4b60b4cefdb30127f0e0d 100644 (file)
@@ -103,6 +103,8 @@ static int ref_filter_match(const char *refname,
        struct string_list_item *item;
        const struct string_list *exclude_patterns = filter->exclude_ref_pattern;
        const struct string_list *include_patterns = filter->include_ref_pattern;
+       const struct string_list *exclude_patterns_config =
+                               filter->exclude_ref_config_pattern;
 
        if (exclude_patterns && exclude_patterns->nr) {
                for_each_string_list_item(item, exclude_patterns) {
@@ -112,17 +114,20 @@ static int ref_filter_match(const char *refname,
        }
 
        if (include_patterns && include_patterns->nr) {
-               int found = 0;
                for_each_string_list_item(item, include_patterns) {
-                       if (match_ref_pattern(refname, item)) {
-                               found = 1;
-                               break;
-                       }
+                       if (match_ref_pattern(refname, item))
+                               return 1;
                }
+               return 0;
+       }
 
-               if (!found)
-                       return 0;
+       if (exclude_patterns_config && exclude_patterns_config->nr) {
+               for_each_string_list_item(item, exclude_patterns_config) {
+                       if (match_ref_pattern(refname, item))
+                               return 0;
+               }
        }
+
        return 1;
 }
 
@@ -198,6 +203,9 @@ void load_ref_decorations(struct decoration_filter *filter, int flags)
                        for_each_string_list_item(item, filter->include_ref_pattern) {
                                normalize_glob_ref(item, NULL, item->string);
                        }
+                       for_each_string_list_item(item, filter->exclude_ref_config_pattern) {
+                               normalize_glob_ref(item, NULL, item->string);
+                       }
                }
                decoration_loaded = 1;
                decoration_flags = flags;