On Thu, Jun 22, 2023 at 4:06 PM brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: > 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@xxxxxxxxxx> > --- > diff --git a/attr.h b/attr.h > @@ -227,4 +227,8 @@ void git_attr_set_direction(enum git_attr_direction new_direction); > +const char *git_etc_gitattributes(void); > +const char *get_home_gitattributes(void); > +int git_attr_system(void); I forgot to mention that it would be appreciated if you document these new public declarations. Even a one-sentence comment would be helpful. For instance: /* Return the location of the personal .gitattributes file. */ const char *get_home_gitattributes(void);