git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 07/19] Provide access to the name attribute of git_attr

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 27, 2011, 20:02 UTC
Message-ID
<7vr55bo47e.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1311689582-3116-8-git-send-email-mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
> It will be present in any likely future reimplementation, and its
> availability simplifies other code.
Looks good to me except for minor nits.
Show 9 quoted lines
> struct git_attr is an opaque structure containing, among other things,
> the name of the attribute that it represents.  This patch adds a
> function git_attr_name(struct git_attr *) that allows the name to be
> read from the structure.  This functionality will be convenient for
> later patches.
>
> This seems harmless to me.  It is hardly conceivable that the
> implementation will change so dramatically that it becomes impossible
> to derive the attribute name from the git_attr.

The original design of attribute API wanted to make sure that the callers do not have to care what _other_ attributes are on the path, and defined only "if you have a specific name, you can ask if that is set". Of course once you start wanting to enumerate the attributes without knowing what attributes may exist in the world, you would need an API to grab all the attributes and then find out the name of each of them. So I think this is not just harmless but is necessary.

Show 5 quoted lines
> diff --git a/attr.c b/attr.c
> ...
> +char *git_attr_name(struct git_attr *attr) {
> +	return attr->name;
> +}
(Style)
	char *git_attr_name(struct git_attr *attr)
	{
		return attr->name;
	}
Show 7 quoted lines
> diff --git a/attr.h b/attr.h
> ...
> +/*
> + * 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.
> + */
should not be modified NOR freed?
Previous: Michael HaggertyNext: Michael Haggerty
Message 10 of 24 in “Add --all option to git-check-attr”
  1. 00/19 Add --all option to git-check-attrMichael Haggerty, Jul 26, 2011
  2. 01/19 doc: Add a link from gitattributes(5) to git-check-attr(1)Michael Haggerty, Jul 26, 2011
  3. 02/19 doc: Correct git_attr() calls in example codeMichael Haggerty, Jul 26, 2011
  4. 03/19 Remove anachronism from commentMichael Haggerty, Jul 26, 2011
  5. 04/19 Disallow the empty string as an attribute nameMichael Haggerty, Jul 26, 2011
  6. Junio C HamanoJul 27, 2011
  7. 05/19 git-check-attr: Add missing "&&"Michael Haggerty, Jul 26, 2011
  8. 06/19 git-check-attr: Add tests of command-line parsingMichael Haggerty, Jul 26, 2011
  9. 07/19 Provide access to the name attribute of git_attrMichael Haggerty, Jul 26, 2011
  10. Junio C HamanoJul 27, 2011
  11. Michael HaggertyJul 28, 2011
  12. 08/19 git-check-attr: Use git_attr_name()Michael Haggerty, Jul 26, 2011
  13. 09/19 Allow querying all attributes on a fileMichael Haggerty, Jul 26, 2011
  14. 10/19 git-check-attr: Extract a function output_attr()Michael Haggerty, Jul 26, 2011
  15. 11/19 git-check-attr: Introduce a new variableMichael Haggerty, Jul 26, 2011
  16. 12/19 git-check-attr: Extract a function error_with_usage()Michael Haggerty, Jul 26, 2011
  17. 13/19 git-check-attr: Handle each error separatelyMichael Haggerty, Jul 26, 2011
  18. 14/19 git-check-attr: Process command-line args more systematicallyMichael Haggerty, Jul 26, 2011
  19. 15/19 git-check-attr: Error out if no pathnames are specifiedMichael Haggerty, Jul 26, 2011
  20. 16/19 git-check-attr: Add an --all option to show all attributesMichael Haggerty, Jul 26, 2011
  21. Michael HaggertyJul 28, 2011
  22. 17/19 git-check-attr: Drive two tests using the same raw dataMichael Haggerty, Jul 26, 2011
  23. 18/19 git-check-attr: Fix command-line handling to match docsMichael Haggerty, Jul 26, 2011
  24. 19/19 Rename struct git_attr_check to git_attr_valueMichael Haggerty, Jul 26, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.