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

Re: [PATCH 2/3] var: add attributes files locations

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jun 22, 2023, 21:18 UTC
Message-ID
<CAPig+cQ=B7M6nPYx-+gqtsJeSuiqKeQhCfiWmyfjiGXsVnFbTw@mail.gmail.com>
In-Reply-To
<20230622195059.320593-3-sandals@crustytoothpaste.net>

On Thu, Jun 22, 2023 at 4:06 PM brian m. carlson <sandals@crustytoothpaste.net> wrote:

Show 33 quoted lines
> Currently, there are some programs which would like to read and parse
> the gitattributes files at the global or system levels.  However, it's
> not always obvious where these files live, especially for the system
> file, which may have been hard-coded at compile time or computed
> dynamically based on the runtime prefix.
>
> It's not reasonable to expect all callers of Git to intuitively know
> where the Git distributor or user has configured these locations to
> be, so add some entries to allow us to determine their location.  Honor
> the GIT_ATTR_NOSYSTEM environment variable if one is specified.  Expose
> the accessor functions in a way that we can reuse them from within the
> var code.
>
> In order to make our paths consistent on Windows and also use the same
> form as paths use in "git rev-parse", let's normalize the path before we
> return it.  This results in Windows-style paths that use slashes, which
> is convenient for making our tests function in a consistent way across
> platforms.  Note that this requires that some of our values be freed, so
> let's add a flag about whether the value needs to be freed and use it
> accordingly.
>
> Signed-off-by: brian m. carlson <bk2204@github.com>
> ---
> diff --git a/t/t0007-git-var.sh b/t/t0007-git-var.sh
> @@ -159,6 +159,26 @@ test_expect_success MINGW 'GIT_SHELL_PATH points to a suitable shell' '
> +test_expect_success 'GIT_ATTR_SYSTEM points to the correct location' '
> +       test_must_fail env GIT_ATTR_NOSYSTEM=1 git var GIT_ATTR_SYSTEM &&
> +       (
> +               sane_unset GIT_ATTR_NOSYSTEM &&
> +               git var GIT_ATTR_SYSTEM >path &&
> +               test "$(cat path)" != ""
> +       )
> +'
Same observation as in patch [1/3]: no need for a temporary file:
    p=$(git var GIT_ATTR_SYSTEM) &&
    test -n "$p"
> +test_expect_success 'GIT_ATTR_GLOBAL points to the correct location' '
> +       TRASHDIR="$(test-tool path-utils normalize_path_copy "$(pwd)")" &&
The reference to $(pwd) is unnecessary, thus potentially confusing. Simpler:
    TRASHDIR="$(test-tool path-utils normalize_path_copy .)" &&
> +       XDG_CONFIG_HOME="$TRASHDIR/.config" git var GIT_ATTR_GLOBAL >path &&
> +       test "$(cat path)" = "$TRASHDIR/.config/git/attributes" &&
Same observation about unnecessary temporary file:
    p=$(XDG_CONFIG_HOME="$TRASHDIR/.config" git var GIT_ATTR_GLOBAL) &&
    test "$p" = "$TRASHDIR/.config/git/attributes" &&
Show 5 quoted lines
> +       (
> +               sane_unset XDG_CONFIG_HOME &&
> +               HOME="$TRASHDIR" git var GIT_ATTR_GLOBAL >path &&
> +               test "$(cat path)" = "$TRASHDIR/.config/git/attributes"
> +       )
And here too.
> +'
Previous: Junio C HamanoNext: brian m. carlson
Message 16 of 42 in “Additional variables for git var”
  1. 0/3 Additional variables for git varbrian m. carlson, Jun 22, 2023
  2. 1/3 var: add support for listing the shellbrian m. carlson, Jun 22, 2023
  3. Eric SunshineJun 22, 2023
  4. Junio C HamanoJun 22, 2023
  5. Eric SunshineJun 22, 2023
  6. brian m. carlsonJun 22, 2023
  7. Junio C HamanoJun 22, 2023
  8. brian m. carlsonJun 22, 2023
  9. 3/3 var: add config file locationsbrian m. carlson, Jun 22, 2023
  10. Eric SunshineJun 22, 2023
  11. 2/3 var: add attributes files locationsbrian m. carlson, Jun 22, 2023
  12. Derrick StoleeJun 22, 2023
  13. brian m. carlsonJun 22, 2023
  14. Junio C HamanoJun 22, 2023
  15. Junio C HamanoJun 22, 2023
  16. Eric SunshineJun 22, 2023
  17. brian m. carlsonJun 22, 2023
  18. Eric SunshineJun 22, 2023
  19. 0/7 Additional variables for git varbrian m. carlson, Jun 26, 2023
  20. 1/7 t: add a function to check executable bitbrian m. carlson, Jun 26, 2023
  21. 3/7 var: format variable structure with C99 initializersbrian m. carlson, Jun 26, 2023
  22. 4/7 var: adjust memory allocation for stringsbrian m. carlson, Jun 26, 2023
  23. Junio C HamanoJun 26, 2023
  24. 2/7 var: add support for listing the shellbrian m. carlson, Jun 26, 2023
  25. 5/7 attr: expose and rename accessor functionsbrian m. carlson, Jun 26, 2023
  26. Junio C HamanoJun 26, 2023
  27. 6/7 var: add attributes files locationsbrian m. carlson, Jun 26, 2023
  28. Jeff KingJun 27, 2023
  29. brian m. carlsonJun 27, 2023
  30. Junio C HamanoJun 27, 2023
  31. Jeff KingJun 27, 2023
  32. 7/7 var: add config file locationsbrian m. carlson, Jun 26, 2023
  33. Junio C HamanoJun 26, 2023
  34. 0/8 Additional variables for git varbrian m. carlson, Jun 27, 2023
  35. 1/8 var: mark unused parameters in git_var callbacksbrian m. carlson, Jun 27, 2023
  36. 2/8 t: add a function to check executable bitbrian m. carlson, Jun 27, 2023
  37. 4/8 var: format variable structure with C99 initializersbrian m. carlson, Jun 27, 2023
  38. 3/8 var: add support for listing the shellbrian m. carlson, Jun 27, 2023
  39. 5/8 var: adjust memory allocation for stringsbrian m. carlson, Jun 27, 2023
  40. 8/8 var: add config file locationsbrian m. carlson, Jun 27, 2023
  41. 7/8 var: add attributes files locationsbrian m. carlson, Jun 27, 2023
  42. 6/8 attr: expose and rename accessor functionsbrian m. carlson, Jun 27, 2023

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.