PHANTOM
🇮🇳 IN
Skip to content

Co/repo env struct#2210

Open
cloobTech wants to merge 11 commits intogit:masterfrom
cloobTech:co/repo-env-struct
Open

Co/repo env struct#2210
cloobTech wants to merge 11 commits intogit:masterfrom
cloobTech:co/repo-env-struct

Conversation

@cloobTech
Copy link
Contributor

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 (git@vger.kernel.org) 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!

The `core.attributeFile` config value is parsed in
git_default_core_config(), loaded eagerly and stored in the global
variable `git_attributes_file`. Storing this value in a global
variable can lead to it being overwritten by another repository when
more than one Git repository run in the same Git process.

Create a new struct `repo_config_values` to hold this value and
other repository dependent values parsed by `git_default_config()`.
This will ensure the current behaviour remains the same while also
enabling the libification of Git.

An accessor function 'repo_config_values()' is created. It checks
if the address of the passed `repo` instance is the same as
`the_repository` and also if the repository instance has been
initialized before returning the struct.

Suggested-by: Phillip Wood <phillip.wood123@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
The config value `core.sparseCheckout` is parsed in
`git_default_core_config()` and stored globally in
`core_apply_sparse_checkout`. This could cause it to be overwritten
by another repository when different Git repositories run in the same
process.

Move the parsed value into `struct repo_config_values` in the_repository
to retain current behaviours and move towards libifying Git.

Suggested-by: Phillip Wood <phillip.wood123@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
…lues`

The config value `branch.autoSetupMerge` is parsed in
`git_default_branch_config()` and stored in the global variable
`git_branch_track`. This global variable can be overwritten
by another repository when multiple Git repos run in the the same process.

Move this value into `struct repo_config_values` in the_repository to
retain current behaviours and move towards libifying Git.
Since the variable is no longer a global variable, it has been renamed to
`branch_track` in the struct `repo_config_values`.

Suggested-by: Phillip Wood <phillip.wood123@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
@gitgitgadget-git
Copy link

There is an issue in commit 39d50db:
environment: move "core_sparse_checkout_cone" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)

@gitgitgadget-git
Copy link

There are issues in commit 704bdc7:
environment: move "sparse_expect_files_outside_of_patterns" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)
  • Lines in the body of the commit messages should be wrapped between 60 and 76 characters.
    Indented lines, and lines without whitespace, are exempt

@gitgitgadget-git
Copy link

There is an issue in commit f29f552:
environment: move "warn_on_object_refname_ambiguity" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)

@gitgitgadget-git
Copy link

There is an issue in commit 3956da4:
environment: move "core_sparse_checkout_cone" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)

@gitgitgadget-git
Copy link

There are issues in commit 8900689:
environment: move "sparse_expect_files_outside_of_patterns" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)
  • Lines in the body of the commit messages should be wrapped between 60 and 76 characters.
    Indented lines, and lines without whitespace, are exempt

@gitgitgadget-git
Copy link

There is an issue in commit cf3303b:
environment: move "warn_on_object_refname_ambiguity" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)

@gitgitgadget-git
Copy link

There is an issue in commit 0b141c6:
environment: move "core_sparse_checkout_cone" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)

@gitgitgadget-git
Copy link

There are issues in commit 66edc90:
environment: move "sparse_expect_files_outside_of_patterns" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)
  • Lines in the body of the commit messages should be wrapped between 60 and 76 characters.
    Indented lines, and lines without whitespace, are exempt

@gitgitgadget-git
Copy link

There is an issue in commit a7c1719:
environment: move "warn_on_object_refname_ambiguity" into struct repo_config_values``

  • First line of commit message is too long (> 76 columns)

The `core.trustctime` configuration is currently stored in the global
variable `trust_ctime`, which makes it shared across repository
instances in a single process.

Store it instead in `repo_config_values`, so the value is tied to the
repository from which it was read. This preserves existing behavior
while avoiding cross-repository state leakage and continues the effort
to reduce reliance on global configuration state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
The `core.checkstat` configuration is currently stored in the global
variable `check_stat`, which makes it shared across repository
instances within a single process.

Store it instead in `repo_config_values` so the value is associated
with the repository from which it was read. This preserves existing
behavior while avoiding cross-repository state leakage and continues
the effort to reduce reliance on global configuration state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
The `zlib_compression_level` configuration is currently stored in the
global variable `zlib_compression_level`, which makes it shared across
repository instances within a single process.

Store it instead in `repo_config_values` so the value is associated
with the repository from which it was read. This preserves existing
behavior while avoiding cross-repository state leakage and continues
the effort to reduce reliance on global configuration state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
…alues`

The `pack_compression_level` configuration is currently stored in the
global variable `pack_compression_level`, which makes it shared across
repository instances within a single process.

Store it instead in `repo_config_values` so the value is associated
with the repository from which it was read. This preserves existing
behavior while avoiding cross-repository state leakage and is another
step toward eliminating repository-dependent global state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
The `core.precomposeunicode` configuration is currently stored in the
global variable `precomposed_unicode`, which makes it shared across
repository instances within a single process.

Store it instead in `repo_config_values` so the value is associated
with the repository from which it was read. This preserves existing
behavior while avoiding cross-repository state leakage and is another
step toward eliminating repository-dependent global state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
The `core_sparse_checkout_cone` variable was previously a global integer,
uninitialized by default. Storing repository-dependent configuration in
globals can lead to cross-repository state leakage.

Move it into `repo_config_values` and initialize it to 0 by default.
This ensures predictable behavior for repositories that do not set
this configuration while preserving existing semantics.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
…lues`

The `sparse_expect_files_outside_of_patterns` variable was previously
a global variable, which makes it shared across repository
instances within a single process.

Move it into `repo_config_values`, this makes the  value  tied to the
repository from which it was read. This preserves existing behavior
while avoiding cross-repository state leakage and is another step
toward eliminating repository-dependent global state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
The `warn_on_object_refname_ambiguity` variable was previously a global
integer, which makes it shared across repository instances in a single
process.

Move it into `repo_config_values` so the value is associated with the
repository from which it was read. This preserves existing behavior
while avoiding cross-repository state leakage and is another step
toward eliminating repository-dependent global state.

Update all references to use repo_config_values().

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
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