def runInfo(self, path):
        if self.recipe._getCapsulePathsForFile(path):
            # capsules do not participate in the tag protocol
            return
        excludedTags = {}
        for tag in self.included:
            for filt in self.included[tag]:
                if filt.match(path):
                    isExcluded = False
                    if tag in self.excluded:
                        for filt in self.excluded[tag]:
                            if filt.match(path):
                                s = excludedTags.setdefault(tag, set())
                                s.add(path)
                                isExcluded = True
                                break
                    if not isExcluded:
                        self.markTag(tag, tag, path)

        for tag in self.tagList:
            if tag.match(path):
                if tag.name:
                    name = tag.name
                else:
                    name = tag.tag
                isExcluded = False
                if tag.tag in self.excluded:
                    for filt in self.excluded[tag.tag]:
                        # exception handling is per-tag, so handled specially
                        if filt.match(path):
                            s = excludedTags.setdefault(name, set())
                            s.add(path)
                            isExcluded = True
                            break
                if not isExcluded:
                    self.markTag(name, tag.tag, path, tag)
        if excludedTags:
            for tag in excludedTags:
                self.info('ignoring tag match for %s: %s',
                          tag, ', '.join(sorted(excludedTags[tag])))