Skip to content

Conversation

@cloobTech
Copy link
Contributor

When handling multiple repositories within the same process, relying on global state for accessing the "core.attributesfile" configuration can lead to incorrect values being used. It also makes it harder to isolate repositories and hinders the libification of git.
The functions bootstrap_attr_stack() and git_attr_val_system() retrieve "core.attributesfile" via git_attr_global_file() which reads from global state git_attributes_file.

Move the "core.attributesfile" configuration into the struct repo_settings instead of relying on the global state. A new function repo_settings_get_attributesfile_path() is added and used to retrieve this setting in a repository-scoped manner. The functions to retrieve "core.attributesfile" are replaced with the new accessor function repo_settings_get_attributesfile_path() This improves multi-repository behaviour and aligns with the goal of libifying of Git.

Reported-by: Ayush Chandekar [email protected]
Mentored-by: Christian Couder [email protected]
Mentored-by: Usman Akinyemi [email protected]

Thanks for taking the time to contribute to Git! Please be advised that the
Git community does not use github.com for their contributions. Instead, we use
a mailing list ([email protected]) for code submissions, code reviews, and
bug reports. Nevertheless, you can use GitGitGadget (https://gitgitgadget.github.io/)
to conveniently send your Pull Requests commits to our mailing list.

For a single-commit pull request, please leave the pull request description
empty
: your commit message itself should describe your changes.

Please read the "guidelines for contributing" linked above!

When handling multiple repositories within the same process, relying on
global state for accessing the "core.attributesfile" configuration can
lead to incorrect values being used. It also makes it harder to isolate
repositories and hinders the libification of git.
The functions `bootstrap_attr_stack()` and `git_attr_val_system()`
retrieve "core.attributesfile" via `git_attr_global_file()`
which reads from global state `git_attributes_file`.

Move the "core.attributesfile" configuration into the
`struct repo_settings` instead of relying on the global state.
A new function `repo_settings_get_attributesfile_path()` is added
and used to retrieve this setting in a repository-scoped manner.
The functions to retrieve "core.attributesfile" are replaced with
the new accessor function `repo_settings_get_attributesfile_path()`
This improves multi-repository behaviour and aligns with the goal of
libifying of Git.

Note that in `bootstrap_attr_stack()`, the `index_state` is used only
if it exists, else we default to `the_repository`.

Reported-by: Ayush Chandekar <[email protected]>
Mentored-by: Christian Couder <[email protected]>
Mentored-by: Usman Akinyemi <[email protected]>
Signed-off-by: Olamide Caleb Bello <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant