tree-walk: support :(attr) matching
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 18 Nov 2018 16:48:00 +0000 (17:48 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 19 Nov 2018 01:50:33 +0000 (10:50 +0900)
commit5a0b97b34c51eaddf39624857f1ac0e7df4ca2e3
tree69b655383aafc8b6fd38942e841e2b477309cd83
parent22af33bece7e121b9d535d0a117cd4553b00fe07
tree-walk: support :(attr) matching

This lets us use :(attr) with "git grep <tree-ish>" or "git log".

:(attr) requires another round of checking before we can declare that
a path is matched. This is done after path matching since we have lots
of optimization to take a shortcut when things don't match.

Note that if :(attr) is present, we can't return
all_entries_interesting / all_entries_not_interesting anymore because
we can't be certain about that. Not until match_pathspec_attrs() can
tell us "yes all these paths satisfy :(attr)".

Second note. Even though we walk a specific tree, we use attributes
from _worktree_ (or falling back to the index), not from .gitattributes
files on that tree. This by itself is not necessarily wrong, but the
user just have to be aware of this.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/glossary-content.txt
t/t6135-pathspec-with-attrs.sh
tree-walk.c