<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/environment.h, branch v2.51.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.51.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.51.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2025-07-23T15:15:22Z</updated>
<entry>
<title>config: move Git config parsing into "environment.c"</title>
<updated>2025-07-23T15:15:22Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2025-07-23T14:08:41Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=08b775864edf96b97500fd70446c55528f5cf4a6'/>
<id>urn:sha1:08b775864edf96b97500fd70446c55528f5cf4a6</id>
<content type='text'>
In "config.c" we host both the business logic to read and write config
files as well as the logic to parse specific Git-related variables. On
the one hand this is mixing concerns, but even more importantly it means
that we cannot easily remove the dependency on `the_repository` in our
config parsing logic.

Move the logic into "environment.c". This file is a grab bag of all
kinds of global state already, so it is quite a good fit. Furthermore,
it also hosts most of the global variables that we're parsing the config
values into, making this an even better fit.

Note that there is one hidden change: in `parse_fsync_components()` we
use an `int` to iterate through `ARRAY_SIZE(fsync_component_names)`. But
as -Wsign-compare warnings are enabled in this file this causes a
compiler warning. The issue is fixed by using a `size_t` instead.

This change allows us to drop the `USE_THE_REPOSITORY_VARIABLE`
declaration.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>repository: move 'repository_format_precious_objects' to repo scope</title>
<updated>2025-07-07T15:31:13Z</updated>
<author>
<name>Ayush Chandekar</name>
<email>ayu.chandekar@gmail.com</email>
</author>
<published>2025-07-04T14:12:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=44e300a97480ef272a596e02b912b72528043193'/>
<id>urn:sha1:44e300a97480ef272a596e02b912b72528043193</id>
<content type='text'>
The 'extensions.preciousObjects' setting when set true, prevents
operations that might drop objects from the object storage. This setting
is populated in the global variable
'repository_format_precious_objects'.

Move this global variable to repo scope by adding it to 'struct
repository and also refactor all the occurences accordingly.

This change is part of an ongoing effort to eliminate global variables,
improve modularity and help libify the codebase.

Mentored-by: Christian Couder &lt;christian.couder@gmail.com&gt;
Mentored-by: Ghanshyam Thakkar &lt;shyamthakkar001@gmail.com&gt;
Signed-off-by: Ayush Chandekar &lt;ayu.chandekar@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>environment: remove the global variable 'core_preload_index'</title>
<updated>2025-06-10T17:10:38Z</updated>
<author>
<name>Ayush Chandekar</name>
<email>ayu.chandekar@gmail.com</email>
</author>
<published>2025-06-10T13:02:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b1d47b464e553331c555f122c5e341dfbfb618bd'/>
<id>urn:sha1:b1d47b464e553331c555f122c5e341dfbfb618bd</id>
<content type='text'>
The global variable 'core_preload_index' is used in a single function
named 'preload_index()' in "preload-index.c". Move its declaration inside
that function, removing unnecessary global state.

This change is part of an ongoing effort to eliminate global variables,
improve modularity and help libify the codebase.

Mentored-by: Christian Couder &lt;christian.couder@gmail.com&gt;
Mentored-by: Ghanshyam Thakkar &lt;shyamthakkar001@gmail.com&gt;
Signed-off-by: Ayush Chandekar &lt;ayu.chandekar@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ab/environment-clean-header'</title>
<updated>2025-04-17T17:28:20Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-04-17T17:28:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cee058be442aea847eecd446e59c1716d3654abd'/>
<id>urn:sha1:cee058be442aea847eecd446e59c1716d3654abd</id>
<content type='text'>
Code clean-up.

* ab/environment-clean-header:
  environment.h: remove unused variables
</content>
</entry>
<entry>
<title>environment.h: remove unused variables</title>
<updated>2025-04-09T16:24:46Z</updated>
<author>
<name>Arnav Bhate</name>
<email>bhatearnav@gmail.com</email>
</author>
<published>2025-04-05T16:45:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=27b7264206613a0fb36b4df21d24939b2a589095'/>
<id>urn:sha1:27b7264206613a0fb36b4df21d24939b2a589095</id>
<content type='text'>
packed_git_window_size and packed_git_limit are not used anywhere in
the codebase. A search found that all references were removed in
d284713bae (config: make `packed_git_(limit|window_size)` non-global
variables, 2024-12-03), except the ones in this file, as they were moved
to struct repo_settings.

Remove packed_git_window_size and packed_git_limit from environment.h.

Signed-off-by: Arnav Bhate &lt;bhatearnav@gmail.com&gt;
Acked-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>environment: move access to "core.bigFileThreshold" into repo settings</title>
<updated>2025-03-10T20:16:18Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2025-03-10T07:13:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7835ee75cdffbce925246cbacc83e8b4a932a681'/>
<id>urn:sha1:7835ee75cdffbce925246cbacc83e8b4a932a681</id>
<content type='text'>
The "core.bigFileThreshold" setting is stored in a global variable and
populated via `git_default_core_config()`. This may cause issues in
the case where one is handling multiple different repositories in a
single process with different values for that config key, as we may or
may not see the correct value in that case. Furthermore, global state
blocks our path towards libification.

Refactor the code so that we instead store the value in `struct
repo_settings`, where the value is computed as-needed and cached.

Note that this change requires us to adapt one test in t1050 that
verifies that we die when parsing an invalid "core.bigFileThreshold"
value. The exercised Git command doesn't use the value at all, and thus
it won't hit the new code path that parses the value. This is addressed
by using git-hash-object(1) instead, which does read the value.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>environment: move access to "core.sharedRepository" into repo settings</title>
<updated>2025-02-28T21:54:11Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2025-02-07T11:03:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f1ce861c34bffbc02998173016b0bca0f6d9f6c4'/>
<id>urn:sha1:f1ce861c34bffbc02998173016b0bca0f6d9f6c4</id>
<content type='text'>
Similar as with the preceding commit, we track "core.sharedRepository"
via a pair of global variables. Move them into `struct repo_settings` so
that we can instead track them per-repository.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>environment: move access to "core.hooksPath" into repo settings</title>
<updated>2025-02-28T21:54:11Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2025-02-07T11:03:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6f3fbed8eda577703426d77dacc71ce0ba46634e'/>
<id>urn:sha1:6f3fbed8eda577703426d77dacc71ce0ba46634e</id>
<content type='text'>
The "core.hooksPath" setting is stored in a global variable and
populated via the `git_default_core_config`. This may cause issues in
the case where one is handling multiple different repositories in a
single process with different values for that config key, as we may or
may not see the correct value in that case. Furthermore, global state
blocks our path towards libification.

Refactor the code so that we instead store the value in `struct
repo_settings`. The value is computed as-needed and cached. The result
should be functionally the same as there aren't ever any code paths
where we'd execute hooks outside the context of a repository.

Note that this requires us to change the passed-in repository in the
`repo_git_path()` family of functions to be non-constant, as we call
`adjust_git_path()` there.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>config: make `delta_base_cache_limit` a non-global variable</title>
<updated>2024-12-03T23:21:55Z</updated>
<author>
<name>Karthik Nayak</name>
<email>karthik.188@gmail.com</email>
</author>
<published>2024-12-03T14:44:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d6b2d21fbf269db7a6be56d28a62cb65a7d7a660'/>
<id>urn:sha1:d6b2d21fbf269db7a6be56d28a62cb65a7d7a660</id>
<content type='text'>
The `delta_base_cache_limit` variable is a global config variable used
by multiple subsystems. Let's make this non-global, by adding this
variable independently to the subsystems where it is used.

First, add the setting to the `repo_settings` struct, this provides
access to the config in places where the repository is available. Use
this in `packfile.c`.

In `index-pack.c` we add it to the `pack_idx_option` struct and its
constructor. While the repository struct is available here, it may not
be set  because `git index-pack` can be used without a repository.

In `gc.c` add it to the `gc_config` struct and also the constructor
function. The gc functions currently do not have direct access to a
repository struct.

These changes are made to remove the usage of `delta_base_cache_limit`
as a global variable in `packfile.c`. This brings us one step closer to
removing the `USE_THE_REPOSITORY_VARIABLE` definition in `packfile.c`
which we complete in the next patch.

Signed-off-by: Karthik Nayak &lt;karthik.188@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>environment: stop storing "core.notesRef" globally</title>
<updated>2024-09-12T17:15:44Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2024-09-12T11:30:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1e7e4a111f986088abc9194d55349419e5c110c3'/>
<id>urn:sha1:1e7e4a111f986088abc9194d55349419e5c110c3</id>
<content type='text'>
Stop storing the "core.notesRef" config value globally. Instead,
retrieve the value in `default_notes_ref()`. The code is never called in
a hot loop anyway, so doing this on every invocation should be perfectly
fine.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
