diff options
author | Junio C Hamano <junkio@cox.net> | 2007-04-16 21:33:31 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-04-17 01:04:59 -0700 |
commit | 515106fa1335462393c08fa8712dddd767dc147a (patch) | |
tree | 4655f5942a377ce8d6fa99ec2c6044071abcac36 /attr.h | |
parent | b568a503def81f49704ba94f5a822d523022102a (diff) | |
download | git-515106fa1335462393c08fa8712dddd767dc147a.tar.gz git-515106fa1335462393c08fa8712dddd767dc147a.tar.xz |
Allow more than true/false to attributes.
This allows you to define three values (and possibly more) to
each attribute: true, false, and unset.
Typically the handlers that notice and act on attribute values
treat "unset" attribute to mean "do your default thing"
(e.g. crlf that is unset would trigger "guess from contents"),
so being able to override a setting to an unset state is
actually useful.
- If you want to set the attribute value to true, have an entry
in .gitattributes file that mentions the attribute name; e.g.
*.o binary
- If you want to set the attribute value explicitly to false,
use '-'; e.g.
*.a -diff
- If you want to make the attribute value _unset_, perhaps to
override an earlier entry, use '!'; e.g.
*.a -diff
c.i.a !diff
This also allows string values to attributes, with the natural
syntax:
attrname=attrvalue
but you cannot use it, as nobody takes notice and acts on
it yet.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'attr.h')
-rw-r--r-- | attr.h | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -6,9 +6,19 @@ struct git_attr; struct git_attr *git_attr(const char *, int); +/* Internal use */ +#define ATTR__TRUE ((void *) 1) +#define ATTR__FALSE ((void *) 0) +#define ATTR__UNSET ((void *) -1) + +/* For public to check git_attr_check results */ +#define ATTR_TRUE(v) ((v) == ATTR__TRUE) +#define ATTR_FALSE(v) ((v) == ATTR__FALSE) +#define ATTR_UNSET(v) ((v) == ATTR__UNSET) + struct git_attr_check { struct git_attr *attr; - int isset; + void *value; }; int git_checkattr(const char *path, int, struct git_attr_check *); |