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

[PATCH v8 00/10] packfile: avoid using the 'the_repository' global variable

From
Karthik Nayak <karthik.188@gmail.com>
Date
Nov 22, 2024, 10:08 UTC
Message-ID
<cover.1732269840.git.karthik.188@gmail.com>
In-Reply-To
<cover.1729504640.git.karthik.188@gmail.com>

The `packfile.c` file uses the global variable 'the_repository' extensively throughout the code. Let's remove all usecases of this, by modifying the required functions to accept a 'struct repository' instead. This is to clean up usage of global state.

The first 3 patches are mostly internal to `packfile.c`, we add the repository field to the `packed_git` struct and this is used to clear up some useages of the global variables.

The next 3 patches are more disruptive, they modify the function definition of `odb_pack_name`, `has_object[_kept]_pack` and `for_each_packed_object` to receive a repository, helping remove other usages of 'the_repository' variable.

Finally, the next two patches deal with global config values. These values are localized. The last patch is removal of an unecessary call to `prepare_packed_git()`. For v5 onwards, I've rebased the series off the master: 8f8d6eee53 (The seventh batch, 2024-11-01), as a dependency for this series 'jk/dumb-http-finalize' was merged to master. I've found no conflicts while merging with seen & next. But since this series does touch multiple files, there could be future conflicts.

Changes in v8:
- Fix typos in comments
- For packfile.c use delta_base_cache_limit from the repository
settings, this avoids loading the config in hot paths.
- Rename `longval` to `ulongval` to better signify the type.
Changes in v7:
- Cleanup stale commit message.
- Add missing space in `if` statement.
- Fix typo s/incase/in case/.
Changes in v6:
- Lazy load repository settings in packfile.c. This ensures that the settings are
available for sure and we do not rely on callees setting it.
- Use `size_t` for `delta_base_cache_limit`.
Changes in v5:
- Move packed_git* settings to repo_settings to ensure we don't keep reparsing the
settings in `use_pack`.
Changes in v4:
- Renamed the repository field within `packed_git` and `multi_pack_index` from
`r` to `repo`, while keeping function parameters to be `r`.
- Fixed bad braces.
Changes in v3:
- Improved commit messages. In the first commit to talk about how packed_git
struct could also be part of the alternates of a repository. In the 7th commit
to talk about the motive behind removing the global variable.
- Changed 'packed_git->repo' to 'packed_git->r' to keep it consistent with the
rest of the code base.
- Replaced 'the_repository' with locally available access to the repository
struct in multiple regions.
- Removed unecessary inclusion of the 'repository.h' header file by forward
declaring the 'repository' struct.
- Replace memcpy with hashcpy.
- Change the logic in the 7th patch to use if else statements.
- Added an extra commit to cleanup `pack-bitmap.c`.
Karthik Nayak (9):
  packfile: add repository to struct `packed_git`
  packfile: use `repository` from `packed_git` directly
  packfile: pass `repository` to static function in the file
  packfile: pass down repository to `odb_pack_name`
  packfile: pass down repository to `has_object[_kept]_pack`
  packfile: pass down repository to `for_each_packed_object`
  config: make `delta_base_cache_limit` a non-global variable
  config: make `packed_git_(limit|window_size)` non-global variables
  midx: add repository to `multi_pack_index` struct
Taylor Blau (1):
  packfile.c: remove unnecessary prepare_packed_git() call
 builtin/cat-file.c       |   7 +-
 builtin/count-objects.c  |   2 +-
 builtin/fast-import.c    |  15 ++--
 builtin/fsck.c           |  20 +++---
 builtin/gc.c             |   8 ++-
 builtin/index-pack.c     |  20 ++++--
 builtin/pack-objects.c   |  11 +--
 builtin/pack-redundant.c |   2 +-
 builtin/repack.c         |   2 +-
 builtin/rev-list.c       |   2 +-
 commit-graph.c           |   4 +-
 config.c                 |  22 ------
 connected.c              |   3 +-
 diff.c                   |   3 +-
 environment.c            |   3 -
 environment.h            |   1 -
 fsck.c                   |   2 +-
 http.c                   |   4 +-
 list-objects.c           |   7 +-
 midx-write.c             |   2 +-
 midx.c                   |   3 +-
 midx.h                   |   3 +
 object-store-ll.h        |   9 ++-
 pack-bitmap.c            |  90 ++++++++++++++----------
 pack-objects.h           |   3 +-
 pack-write.c             |   1 +
 pack.h                   |   2 +
 packfile.c               | 144 ++++++++++++++++++++++-----------------
 packfile.h               |  18 +++--
 promisor-remote.c        |   2 +-
 prune-packed.c           |   2 +-
 reachable.c              |   4 +-
 repo-settings.c          |  18 +++++
 repo-settings.h          |   7 ++
 revision.c               |  13 ++--
 tag.c                    |   2 +-
 36 files changed, 271 insertions(+), 190 deletions(-)
Range-diff against v7:
 1:  6c00e25c86 !  1:  d1fdd6996a packfile: add repository to struct `packed_git`
    @@ object-store-ll.h: struct packed_git {
      	const uint32_t *mtimes_map;
      	size_t mtimes_size;
     +
    -+	/* repo dentoes the repository this packed file belongs to */
    ++	/* repo denotes the repository this packfile belongs to */
     +	struct repository *repo;
     +
      	/* something like ".git/objects/pack/xxxxx.pack" */
 2:  70fc8a79af =  2:  65c09858ce packfile: use `repository` from `packed_git` directly
 3:  167a1f3a11 =  3:  80632934d1 packfile: pass `repository` to static function in the file
 4:  b7cfe78217 =  4:  67d71eab83 packfile: pass down repository to `odb_pack_name`
 5:  5566f5554c =  5:  ee210fa153 packfile: pass down repository to `has_object[_kept]_pack`
 6:  1b26e45a9b =  6:  8db7094f4e packfile: pass down repository to `for_each_packed_object`
 7:  1bdc34f4d8 !  7:  d1b6e8801b config: make `delta_base_cache_limit` a non-global variable
    @@ Commit message
     
         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 to the stack of each of the subsystems where it is used.
    +    variable independently to the subsystems where it is used.
     
    -    In `gc.c` we add it to the `gc_config` struct and also the constructor
    -    function. In `index-pack.c` we add it to the `pack_idx_option` struct
    -    and its constructor. Finally, in `packfile.c` we dynamically retrieve
    -    this value from the repository config, since the value is only used once
    -    in the entire subsystem.
    +    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
    @@ pack.h: struct pack_idx_option {
      	 */
      	int anomaly_alloc, anomaly_nr;
      	uint32_t *anomaly;
    -+	unsigned long delta_base_cache_limit;
    ++
    ++	size_t delta_base_cache_limit;
      };
      
      void reset_pack_idx_option(struct pack_idx_option *);
     
      ## packfile.c ##
    -@@
    - #include "commit-graph.h"
    - #include "pack-revindex.h"
    - #include "promisor-remote.h"
    -+#include "config.h"
    -+#include "pack-objects.h"
    - 
    - char *odb_pack_name(struct repository *r, struct strbuf *buf,
    - 		    const unsigned char *hash, const char *ext)
     @@ packfile.c: void clear_delta_base_cache(void)
      }
      
    @@ packfile.c: void clear_delta_base_cache(void)
      	struct delta_base_cache_entry *ent;
      	struct list_head *lru, *tmp;
     @@ packfile.c: void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
    - 	struct unpack_entry_stack_ent *delta_stack = small_delta_stack;
      	int delta_stack_nr = 0, delta_stack_alloc = UNPACK_ENTRY_STACK_PREALLOC;
      	int base_from_cache = 0;
    -+	unsigned long delta_base_cache_limit = DEFAULT_DELTA_BASE_CACHE_LIMIT;
    -+
    -+	repo_config_get_ulong(r, "core.deltabasecachelimit", &delta_base_cache_limit);
      
    ++	prepare_repo_settings(p->repo);
    ++
      	write_pack_access_log(p, obj_offset);
      
    + 	/* PHASE 1: drill down to the innermost base object */
     @@ packfile.c: void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
      		 * before we are done using it.
      		 */
      		if (!external_base)
     -			add_delta_base_cache(p, base_obj_offset, base, base_size, type);
    -+			add_delta_base_cache(p, base_obj_offset, base,
    -+					     base_size, delta_base_cache_limit,
    ++			add_delta_base_cache(p, base_obj_offset, base, base_size,
    ++					     p->repo->settings.delta_base_cache_limit,
     +					     type);
      
      		free(delta_data);
      		free(external_base);
    +
    + ## repo-settings.c ##
    +@@
    + #include "repo-settings.h"
    + #include "repository.h"
    + #include "midx.h"
    ++#include "pack-objects.h"
    + 
    + static void repo_cfg_bool(struct repository *r, const char *key, int *dest,
    + 			  int def)
    +@@ repo-settings.c: void prepare_repo_settings(struct repository *r)
    + 	const char *strval;
    + 	int manyfiles;
    + 	int read_changed_paths;
    ++	unsigned long ulongval;
    + 
    + 	if (!r->gitdir)
    + 		BUG("Cannot add settings for uninitialized repository");
    +@@ repo-settings.c: void prepare_repo_settings(struct repository *r)
    + 	 * removed.
    + 	 */
    + 	r->settings.command_requires_full_index = 1;
    ++
    ++	if (!repo_config_get_ulong(r, "core.deltabasecachelimit", &ulongval))
    ++		r->settings.delta_base_cache_limit = ulongval;
    + }
    + 
    + enum log_refs_config repo_settings_get_log_all_ref_updates(struct repository *repo)
    +
    + ## repo-settings.h ##
    +@@ repo-settings.h: struct repo_settings {
    + 
    + 	int core_multi_pack_index;
    + 	int warn_ambiguous_refs; /* lazily loaded via accessor */
    ++
    ++	size_t delta_base_cache_limit;
    + };
    + #define REPO_SETTINGS_INIT { \
    + 	.index_version = -1, \
    + 	.core_untracked_cache = UNTRACKED_CACHE_KEEP, \
    + 	.fetch_negotiation_algorithm = FETCH_NEGOTIATION_CONSECUTIVE, \
    + 	.warn_ambiguous_refs = -1, \
    ++	.delta_base_cache_limit = DEFAULT_DELTA_BASE_CACHE_LIMIT, \
    + }
    + 
    + void prepare_repo_settings(struct repository *r);
 8:  7b6baa89ac !  8:  30a52f192f config: make `packed_git_(limit|window_size)` non-global variables
    @@ packfile.h: unsigned long repo_approximate_object_count(struct repository *r);
     
      ## repo-settings.c ##
     @@ repo-settings.c: void prepare_repo_settings(struct repository *r)
    - 	const char *strval;
    - 	int manyfiles;
    - 	int read_changed_paths;
    -+	unsigned long longval;
      
    - 	if (!r->gitdir)
    - 		BUG("Cannot add settings for uninitialized repository");
    -@@ repo-settings.c: void prepare_repo_settings(struct repository *r)
    - 	 * removed.
    - 	 */
    - 	r->settings.command_requires_full_index = 1;
    + 	if (!repo_config_get_ulong(r, "core.deltabasecachelimit", &ulongval))
    + 		r->settings.delta_base_cache_limit = ulongval;
     +
    -+	if (!repo_config_get_ulong(r, "core.packedgitwindowsize", &longval)) {
    ++	if (!repo_config_get_ulong(r, "core.packedgitwindowsize", &ulongval)) {
     +		int pgsz_x2 = getpagesize() * 2;
     +
     +		/* This value must be multiple of (pagesize * 2) */
    -+		longval /= pgsz_x2;
    -+		if (longval < 1)
    -+			longval = 1;
    -+		r->settings.packed_git_window_size = longval * pgsz_x2;
    ++		ulongval /= pgsz_x2;
    ++		if (ulongval < 1)
    ++			ulongval = 1;
    ++		r->settings.packed_git_window_size = ulongval * pgsz_x2;
     +	}
     +
    -+	if (!repo_config_get_ulong(r, "core.packedgitlimit", &longval))
    -+		r->settings.packed_git_limit = longval;
    ++	if (!repo_config_get_ulong(r, "core.packedgitlimit", &ulongval))
    ++		r->settings.packed_git_limit = ulongval;
      }
      
      enum log_refs_config repo_settings_get_log_all_ref_updates(struct repository *repo)
     
      ## repo-settings.h ##
     @@ repo-settings.h: struct repo_settings {
    - 
    - 	int core_multi_pack_index;
      	int warn_ambiguous_refs; /* lazily loaded via accessor */
    -+
    + 
    + 	size_t delta_base_cache_limit;
     +	size_t packed_git_window_size;
     +	size_t packed_git_limit;
      };
      #define REPO_SETTINGS_INIT { \
      	.index_version = -1, \
    - 	.core_untracked_cache = UNTRACKED_CACHE_KEEP, \
    +@@ repo-settings.h: struct repo_settings {
      	.fetch_negotiation_algorithm = FETCH_NEGOTIATION_CONSECUTIVE, \
      	.warn_ambiguous_refs = -1, \
    + 	.delta_base_cache_limit = DEFAULT_DELTA_BASE_CACHE_LIMIT, \
     +	.packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE, \
     +	.packed_git_limit = DEFAULT_PACKED_GIT_LIMIT, \
      }
 9:  a3667d87ec =  9:  2fe5d2506f midx: add repository to `multi_pack_index` struct
 -:  ---------- > 10:  05989c2e27 packfile.c: remove unnecessary prepare_packed_git() call
-- 
2.47.0
Previous: karthik nayakNext: Karthik Nayak
Message 131 of 171 in “packfile: avoid using the 'the_repository' global variable”
  1. 00/20 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Oct 21, 2024
  2. 01/20 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Oct 21, 2024
  3. Taylor BlauOct 21, 2024
  4. karthik nayakOct 22, 2024
  5. Taylor BlauOct 22, 2024
  6. 02/20 packfile: pass down repository to `unuse_one_window`Karthik Nayak, Oct 21, 2024
  7. Taylor BlauOct 21, 2024
  8. 03/20 packfile: pass down repository to `close_one_pack`Karthik Nayak, Oct 21, 2024
  9. 04/20 packfile: pass down repository to `add_packed_git`Karthik Nayak, Oct 21, 2024
  10. 05/20 packfile: pass down repository to `unpack_object_header`Karthik Nayak, Oct 21, 2024
  11. 06/20 packfile: pass down repository to `get_delta_base`Karthik Nayak, Oct 21, 2024
  12. 07/20 packfile: use provided repository in `packed_object_info`Karthik Nayak, Oct 21, 2024
  13. 08/20 packfile: pass down repository to `unpack_compressed_entry`Karthik Nayak, Oct 21, 2024
  14. 09/20 packfile: pass down repository to `nth_packed_object_id`Karthik Nayak, Oct 21, 2024
  15. 10/20 packfile: pass down repository to `find_pack_entry_one`Karthik Nayak, Oct 21, 2024
  16. 11/20 packfile: pass down repository to `fill_pack_entry`Karthik Nayak, Oct 21, 2024
  17. 12/20 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Oct 21, 2024
  18. 13/20 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Oct 21, 2024
  19. 14/20 packfile: pass down repository to `is_promisor_object`Karthik Nayak, Oct 21, 2024
  20. 15/20 object-store: pass down repository to `each_packed_object_fn`Karthik Nayak, Oct 21, 2024
  21. 16/20 packfile: pass down repository to `open_pack_index`Karthik Nayak, Oct 21, 2024
  22. 17/20 packfile: stop using 'the_hash_algo'Karthik Nayak, Oct 21, 2024
  23. 18/20 packfile: pass down repository to `nth_packed_object_offset`Karthik Nayak, Oct 21, 2024
  24. 19/20 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Oct 21, 2024
  25. 20/20 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Oct 21, 2024
  26. Taylor BlauOct 21, 2024
  27. karthik nayakOct 27, 2024
  28. Taylor BlauOct 27, 2024
  29. Jeff KingOct 28, 2024
  30. karthik nayakOct 28, 2024
  31. Taylor BlauOct 28, 2024
  32. 0/8 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Oct 28, 2024
  33. 1/8 packfile: add repository to struct `packed_git`Karthik Nayak, Oct 28, 2024
  34. Taylor BlauOct 28, 2024
  35. karthik nayakOct 29, 2024
  36. Taylor BlauOct 29, 2024
  37. 2/8 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Oct 28, 2024
  38. Taylor BlauOct 28, 2024
  39. karthik nayakOct 29, 2024
  40. 3/8 packfile: pass `repository` to static function in the fileKarthik Nayak, Oct 28, 2024
  41. Taylor BlauOct 28, 2024
  42. 5/8 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Oct 28, 2024
  43. Taylor BlauOct 28, 2024
  44. karthik nayakOct 29, 2024
  45. 4/8 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Oct 28, 2024
  46. Taylor BlauOct 28, 2024
  47. Jeff KingOct 29, 2024
  48. karthik nayakOct 29, 2024
  49. Taylor BlauOct 29, 2024
  50. 6/8 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Oct 28, 2024
  51. 7/8 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Oct 28, 2024
  52. me@ttaylorr.comOct 28, 2024
  53. karthik nayakOct 29, 2024
  54. 8/8 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Oct 28, 2024
  55. Taylor BlauOct 28, 2024
  56. karthik nayakOct 29, 2024
  57. Taylor BlauOct 29, 2024
  58. 0/9 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Oct 31, 2024
  59. 1/9 packfile: add repository to struct `packed_git`Karthik Nayak, Oct 31, 2024
  60. 2/9 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Oct 31, 2024
  61. 3/9 packfile: pass `repository` to static function in the fileKarthik Nayak, Oct 31, 2024
  62. 4/9 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Oct 31, 2024
  63. 5/9 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Oct 31, 2024
  64. 6/9 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Oct 31, 2024
  65. 7/9 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Oct 31, 2024
  66. 8/9 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Oct 31, 2024
  67. Jeff KingNov 1, 2024
  68. Taylor BlauNov 1, 2024
  69. karthik nayakNov 4, 2024
  70. 9/9 midx: add repository to `multi_pack_index` structKarthik Nayak, Oct 31, 2024
  71. Taylor BlauOct 31, 2024
  72. Taylor BlauNov 1, 2024
  73. karthik nayakNov 1, 2024
  74. Jeff KingNov 1, 2024
  75. karthik nayakNov 4, 2024
  76. Jeff KingNov 4, 2024
  77. 0/9 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Nov 4, 2024
  78. 1/9 packfile: add repository to struct `packed_git`Karthik Nayak, Nov 4, 2024
  79. 2/9 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Nov 4, 2024
  80. 3/9 packfile: pass `repository` to static function in the fileKarthik Nayak, Nov 4, 2024
  81. 4/9 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Nov 4, 2024
  82. 5/9 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Nov 4, 2024
  83. 6/9 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Nov 4, 2024
  84. 7/9 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Nov 4, 2024
  85. 8/9 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Nov 4, 2024
  86. Jeff KingNov 4, 2024
  87. karthik nayakNov 5, 2024
  88. 9/9 midx: add repository to `multi_pack_index` structKarthik Nayak, Nov 4, 2024
  89. Jeff KingNov 4, 2024
  90. karthik nayakNov 5, 2024
  91. 0/9 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Nov 7, 2024
  92. 1/9 packfile: add repository to struct `packed_git`Karthik Nayak, Nov 7, 2024
  93. 2/9 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Nov 7, 2024
  94. 3/9 packfile: pass `repository` to static function in the fileKarthik Nayak, Nov 7, 2024
  95. 4/9 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Nov 7, 2024
  96. 5/9 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Nov 7, 2024
  97. 6/9 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Nov 7, 2024
  98. 7/9 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Nov 7, 2024
  99. 8/9 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Nov 7, 2024
  100. Junio C HamanoNov 8, 2024
  101. karthik nayakNov 8, 2024
  102. 9/9 midx: add repository to `multi_pack_index` structKarthik Nayak, Nov 7, 2024
  103. Junio C HamanoNov 8, 2024
  104. karthik nayakNov 8, 2024
  105. 0/9 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Nov 11, 2024
  106. 1/9 packfile: add repository to struct `packed_git`Karthik Nayak, Nov 11, 2024
  107. Toon ClaesNov 13, 2024
  108. karthik nayakNov 13, 2024
  109. Junio C HamanoNov 13, 2024
  110. karthik nayakNov 14, 2024
  111. Taylor BlauNov 20, 2024
  112. karthik nayakNov 21, 2024
  113. 2/9 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Nov 11, 2024
  114. 3/9 packfile: pass `repository` to static function in the fileKarthik Nayak, Nov 11, 2024
  115. 5/9 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Nov 11, 2024
  116. 4/9 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Nov 11, 2024
  117. 6/9 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Nov 11, 2024
  118. Taylor BlauNov 20, 2024
  119. packfile.c: remove unnecessary prepare_packed_git() callTaylor Blau, Nov 20, 2024
  120. Jeff KingNov 21, 2024
  121. 7/9 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Nov 11, 2024
  122. Taylor BlauNov 20, 2024
  123. Jeff KingNov 21, 2024
  124. karthik nayakNov 21, 2024
  125. 8/9 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Nov 11, 2024
  126. 9/9 midx: add repository to `multi_pack_index` structKarthik Nayak, Nov 11, 2024
  127. Jeff KingNov 12, 2024
  128. karthik nayakNov 13, 2024
  129. Taylor BlauNov 20, 2024
  130. karthik nayakNov 21, 2024
  131. 00/10 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Nov 22, 2024
  132. 01/10 packfile: add repository to struct `packed_git`Karthik Nayak, Nov 22, 2024
  133. 03/10 packfile: pass `repository` to static function in the fileKarthik Nayak, Nov 22, 2024
  134. 02/10 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Nov 22, 2024
  135. 04/10 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Nov 22, 2024
  136. 05/10 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Nov 22, 2024
  137. 06/10 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Nov 22, 2024
  138. 07/10 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Nov 22, 2024
  139. Junio C HamanoNov 26, 2024
  140. karthik nayakNov 26, 2024
  141. 08/10 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Nov 22, 2024
  142. 09/10 midx: add repository to `multi_pack_index` structKarthik Nayak, Nov 22, 2024
  143. 10/10 packfile.c: remove unnecessary prepare_packed_git() callKarthik Nayak, Nov 22, 2024
  144. 00/10 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Nov 26, 2024
  145. 01/10 packfile: add repository to struct `packed_git`Karthik Nayak, Nov 26, 2024
  146. Kristoffer HaugsbakkNov 27, 2024
  147. karthik nayakNov 27, 2024
  148. 02/10 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Nov 26, 2024
  149. 03/10 packfile: pass `repository` to static function in the fileKarthik Nayak, Nov 26, 2024
  150. Kristoffer HaugsbakkNov 27, 2024
  151. karthik nayakNov 27, 2024
  152. 04/10 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Nov 26, 2024
  153. 05/10 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Nov 26, 2024
  154. 06/10 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Nov 26, 2024
  155. 08/10 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Nov 26, 2024
  156. 07/10 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Nov 26, 2024
  157. 09/10 midx: add repository to `multi_pack_index` structKarthik Nayak, Nov 26, 2024
  158. 10/10 packfile.c: remove unnecessary prepare_packed_git() callKarthik Nayak, Nov 26, 2024
  159. 00/10 packfile: avoid using the 'the_repository' global variableKarthik Nayak, Dec 3, 2024
  160. 01/10 packfile: add repository to struct `packed_git`Karthik Nayak, Dec 3, 2024
  161. 02/10 packfile: use `repository` from `packed_git` directlyKarthik Nayak, Dec 3, 2024
  162. 03/10 packfile: pass `repository` to static function in the fileKarthik Nayak, Dec 3, 2024
  163. 04/10 packfile: pass down repository to `odb_pack_name`Karthik Nayak, Dec 3, 2024
  164. 05/10 packfile: pass down repository to `has_object[_kept]_pack`Karthik Nayak, Dec 3, 2024
  165. 06/10 packfile: pass down repository to `for_each_packed_object`Karthik Nayak, Dec 3, 2024
  166. 07/10 config: make `delta_base_cache_limit` a non-global variableKarthik Nayak, Dec 3, 2024
  167. 08/10 config: make `packed_git_(limit|window_size)` non-global variablesKarthik Nayak, Dec 3, 2024
  168. 10/10 packfile.c: remove unnecessary prepare_packed_git() callKarthik Nayak, Dec 3, 2024
  169. 09/10 midx: add repository to `multi_pack_index` structKarthik Nayak, Dec 3, 2024
  170. Kristoffer HaugsbakkDec 3, 2024
  171. Junio C HamanoDec 3, 2024

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.