summaryrefslogtreecommitdiff
path: root/pathspec.h
diff options
context:
space:
mode:
authorBrandon Williams <bmwill@google.com>2017-03-13 18:23:21 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-03-13 22:28:54 (GMT)
commitb0db70465246bb8309d3d12c9bc34ac3f0c1e203 (patch)
treea82cfca2e400ddd21f22cec61e2d664462e4a38f /pathspec.h
parent625568cd8813bf32b2172eaf59e45e9da5978ce3 (diff)
downloadgit-b0db70465246bb8309d3d12c9bc34ac3f0c1e203.zip
git-b0db70465246bb8309d3d12c9bc34ac3f0c1e203.tar.gz
git-b0db70465246bb8309d3d12c9bc34ac3f0c1e203.tar.bz2
pathspec: allow querying for attributes
The pathspec mechanism is extended via the new ":(attr:eol=input)pattern/to/match" syntax to filter paths so that it requires paths to not just match the given pattern but also have the specified attrs attached for them to be chosen. Based on a patch by Stefan Beller <sbeller@google.com> Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pathspec.h')
-rw-r--r--pathspec.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/pathspec.h b/pathspec.h
index 49fd823..55e9769 100644
--- a/pathspec.h
+++ b/pathspec.h
@@ -8,13 +8,15 @@
#define PATHSPEC_GLOB (1<<3)
#define PATHSPEC_ICASE (1<<4)
#define PATHSPEC_EXCLUDE (1<<5)
+#define PATHSPEC_ATTR (1<<6)
#define PATHSPEC_ALL_MAGIC \
(PATHSPEC_FROMTOP | \
PATHSPEC_MAXDEPTH | \
PATHSPEC_LITERAL | \
PATHSPEC_GLOB | \
PATHSPEC_ICASE | \
- PATHSPEC_EXCLUDE)
+ PATHSPEC_EXCLUDE | \
+ PATHSPEC_ATTR)
#define PATHSPEC_ONESTAR 1 /* the pathspec pattern satisfies GFNM_ONESTAR */
@@ -31,6 +33,17 @@ struct pathspec {
int len, prefix;
int nowildcard_len;
int flags;
+ int attr_match_nr;
+ struct attr_match {
+ char *value;
+ enum attr_match_mode {
+ MATCH_SET,
+ MATCH_UNSET,
+ MATCH_VALUE,
+ MATCH_UNSPECIFIED
+ } match_mode;
+ } *attr_match;
+ struct attr_check *attr_check;
} *items;
};