An attribute is an opaque object that is identified by its name.
        Pass the name to `git_attr()` function to obtain the object of
        this type.  The internal representation of this structure is
-       of no interest to the calling programs.
+       of no interest to the calling programs.  The name of the
+       attribute can be retrieved by calling `git_attr_name()`.
 
 `struct git_attr_check`::
 
 
 static struct git_attr_check *check_all_attr;
 static struct git_attr *(git_attr_hash[HASHSIZE]);
 
+char *git_attr_name(struct git_attr *attr)
+{
+       return attr->name;
+}
+
 static unsigned hash_name(const char *name, int namelen)
 {
        unsigned val = 0, c;
 
        const char *value;
 };
 
+/*
+ * Return the name of the attribute represented by the argument.  The
+ * return value is a pointer to a null-delimited string that is part
+ * of the internal data structure; it should not be modified or freed.
+ */
+char *git_attr_name(struct git_attr *);
+
 int git_checkattr(const char *path, int, struct git_attr_check *);
 
 enum git_attr_direction {