All of lore.kernel.org
 help / color / mirror / Atom feed
From: Karthik Nayak <karthik.188@gmail.com>
To: karthik.188@gmail.com
Cc: git@vger.kernel.org, me@ttaylorr.com, peff@peff.net
Subject: [PATCH v4 0/9] packfile: avoid using the 'the_repository' global variable
Date: Thu, 31 Oct 2024 10:39:43 +0100	[thread overview]
Message-ID: <cover.1730366765.git.karthik.188@gmail.com> (raw)
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 last two patches deal with global config values. These values are
localized.

This series is based off on master: 6a11438f43 (The fifth batch, 2024-10-25),
with 'jk/dumb-http-finalize' merged in. I found no issues merging this with seen,
but since these patches cover a lot of files, there might be some conflicts.

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

 builtin/cat-file.c       |   7 +-
 builtin/count-objects.c  |   2 +-
 builtin/fast-import.c    |  15 ++--
 builtin/fsck.c           |  20 +++--
 builtin/gc.c             |   5 +-
 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                   |   1 +
 packfile.c               | 182 ++++++++++++++++++++++++++-------------
 packfile.h               |  18 ++--
 promisor-remote.c        |   2 +-
 prune-packed.c           |   2 +-
 reachable.c              |   4 +-
 revision.c               |  13 +--
 tag.c                    |   2 +-
 34 files changed, 280 insertions(+), 190 deletions(-)

Range-diff against v3:
 1:  5afb9af0af !  1:  b3d518e998 packfile: add repository to struct `packed_git`
    @@ builtin/fast-import.c: static void start_packfile(void)
      
      	p->pack_fd = pack_fd;
      	p->do_not_close = 1;
    -+	p->r = the_repository;
    ++	p->repo = the_repository;
      	pack_file = hashfd(pack_fd, p->pack_name);
      
      	pack_data = p;
    @@ builtin/fast-import.c: static void end_packfile(void)
      
      		/* Register the packfile with core git's machinery. */
     -		new_p = add_packed_git(idx_name, strlen(idx_name), 1);
    -+		new_p = add_packed_git(pack_data->r, idx_name, strlen(idx_name), 1);
    ++		new_p = add_packed_git(pack_data->repo, idx_name, strlen(idx_name), 1);
      		if (!new_p)
      			die("core git rejected index %s", idx_name);
      		all_packs[pack_id] = new_p;
    @@ object-store-ll.h: struct packed_git {
      	size_t mtimes_size;
     +
     +	/* repo dentoes the repository this packed file belongs to */
    -+	struct repository *r;
    ++	struct repository *repo;
     +
      	/* something like ".git/objects/pack/xxxxx.pack" */
      	char pack_name[FLEX_ARRAY]; /* more */
    @@ packfile.c: uint32_t get_pack_fanout(struct packed_git *p, uint32_t value)
      	struct packed_git *p = xmalloc(st_add(sizeof(*p), extra));
      	memset(p, 0, sizeof(*p));
      	p->pack_fd = -1;
    -+	p->r = r;
    ++	p->repo = r;
      	return p;
      }
      
 2:  5350b4f9fb !  2:  bb9d9aa744 packfile: use `repository` from `packed_git` directly
    @@ packfile.c: static int check_packed_git_idx(const char *path, struct packed_git
      	int fd = git_open(path), ret;
      	struct stat st;
     -	const unsigned int hashsz = the_hash_algo->rawsz;
    -+	const unsigned int hashsz = p->r->hash_algo->rawsz;
    ++	const unsigned int hashsz = p->repo->hash_algo->rawsz;
      
      	if (fd < 0)
      		return -1;
    @@ packfile.c: struct packed_git *parse_pack_index(struct repository *r, unsigned c
      	memcpy(p->pack_name, path, alloc); /* includes NUL */
      	free(path);
     -	hashcpy(p->hash, sha1, the_repository->hash_algo);
    -+	hashcpy(p->hash, sha1, p->r->hash_algo);
    ++	hashcpy(p->hash, sha1, p->repo->hash_algo);
      	if (check_packed_git_idx(idx_path, p)) {
      		free(p);
      		return NULL;
    @@ packfile.c: static int unuse_one_window(struct packed_git *current)
      	if (current)
      		scan_windows(current, &lru_p, &lru_w, &lru_l);
     -	for (p = the_repository->objects->packed_git; p; p = p->next)
    -+	for (p = current->r->objects->packed_git; p; p = p->next)
    ++	for (p = current->repo->objects->packed_git; p; p = p->next)
      		scan_windows(p, &lru_p, &lru_w, &lru_l);
      	if (lru_p) {
      		munmap(lru_w->base, lru_w->len);
    @@ packfile.c: static int open_packed_git_1(struct packed_git *p)
      	unsigned char *idx_hash;
      	ssize_t read_result;
     -	const unsigned hashsz = the_hash_algo->rawsz;
    -+	const unsigned hashsz = p->r->hash_algo->rawsz;
    ++	const unsigned hashsz = p->repo->hash_algo->rawsz;
      
      	if (open_pack_index(p))
      		return error("packfile %s index unavailable", p->pack_name);
    @@ packfile.c: static int open_packed_git_1(struct packed_git *p)
      		return error("packfile %s signature is unavailable", p->pack_name);
      	idx_hash = ((unsigned char *)p->index_data) + p->index_size - hashsz * 2;
     -	if (!hasheq(hash, idx_hash, the_repository->hash_algo))
    -+	if (!hasheq(hash, idx_hash, p->r->hash_algo))
    ++	if (!hasheq(hash, idx_hash, p->repo->hash_algo))
      		return error("packfile %s does not match index", p->pack_name);
      	return 0;
      }
    @@ packfile.c: unsigned char *use_pack(struct packed_git *p,
      	if (!p->pack_size && p->pack_fd == -1 && open_packed_git(p))
      		die("packfile %s cannot be accessed", p->pack_name);
     -	if (offset > (p->pack_size - the_hash_algo->rawsz))
    -+	if (offset > (p->pack_size - p->r->hash_algo->rawsz))
    ++	if (offset > (p->pack_size - p->repo->hash_algo->rawsz))
      		die("offset beyond end of packfile (truncated pack?)");
      	if (offset < 0)
      		die(_("offset before end of packfile (broken .idx?)"));
    @@ packfile.c: off_t get_delta_base(struct packed_git *p,
      		/* The base entry _must_ be in the same pack */
      		struct object_id oid;
     -		oidread(&oid, base_info, the_repository->hash_algo);
    -+		oidread(&oid, base_info, p->r->hash_algo);
    ++		oidread(&oid, base_info, p->repo->hash_algo);
      		base_offset = find_pack_entry_one(&oid, p);
     -		*curpos += the_hash_algo->rawsz;
    -+		*curpos += p->r->hash_algo->rawsz;
    ++		*curpos += p->repo->hash_algo->rawsz;
      	} else
      		die("I am totally screwed");
      	return base_offset;
    @@ packfile.c: static int get_delta_base_oid(struct packed_git *p,
      	if (type == OBJ_REF_DELTA) {
      		unsigned char *base = use_pack(p, w_curs, curpos, NULL);
     -		oidread(oid, base, the_repository->hash_algo);
    -+		oidread(oid, base, p->r->hash_algo);
    ++		oidread(oid, base, p->repo->hash_algo);
      		return 0;
      	} else if (type == OBJ_OFS_DELTA) {
      		uint32_t base_pos;
    @@ packfile.c: int packed_object_info(struct repository *r, struct packed_git *p,
      			}
      		} else
     -			oidclr(oi->delta_base_oid, the_repository->hash_algo);
    -+			oidclr(oi->delta_base_oid, p->r->hash_algo);
    ++			oidclr(oi->delta_base_oid, p->repo->hash_algo);
      	}
      
      	oi->whence = in_delta_base_cache(p, obj_offset) ? OI_DBCACHED :
    @@ packfile.c: int bsearch_pack(const struct object_id *oid, const struct packed_gi
      	const unsigned char *index_fanout = p->index_data;
      	const unsigned char *index_lookup;
     -	const unsigned int hashsz = the_hash_algo->rawsz;
    -+	const unsigned int hashsz = p->r->hash_algo->rawsz;
    ++	const unsigned int hashsz = p->repo->hash_algo->rawsz;
      	int index_lookup_width;
      
      	if (!index_fanout)
    @@ packfile.c: int nth_packed_object_id(struct object_id *oid,
      {
      	const unsigned char *index = p->index_data;
     -	const unsigned int hashsz = the_hash_algo->rawsz;
    -+	const unsigned int hashsz = p->r->hash_algo->rawsz;
    ++	const unsigned int hashsz = p->repo->hash_algo->rawsz;
      	if (!index) {
      		if (open_pack_index(p))
      			return -1;
    @@ packfile.c: int nth_packed_object_id(struct object_id *oid,
      	if (p->index_version == 1) {
      		oidread(oid, index + st_add(st_mult(hashsz + 4, n), 4),
     -			the_repository->hash_algo);
    -+			p->r->hash_algo);
    ++			p->repo->hash_algo);
      	} else {
      		index += 8;
     -		oidread(oid, index + st_mult(hashsz, n),
     -			the_repository->hash_algo);
    -+		oidread(oid, index + st_mult(hashsz, n), p->r->hash_algo);
    ++		oidread(oid, index + st_mult(hashsz, n), p->repo->hash_algo);
      	}
      	return 0;
      }
    @@ packfile.c: void check_pack_index_ptr(const struct packed_git *p, const void *vp
      {
      	const unsigned char *index = p->index_data;
     -	const unsigned int hashsz = the_hash_algo->rawsz;
    -+	const unsigned int hashsz = p->r->hash_algo->rawsz;
    ++	const unsigned int hashsz = p->repo->hash_algo->rawsz;
      	index += 4 * 256;
      	if (p->index_version == 1) {
      		return ntohl(*((uint32_t *)(index + st_mult(hashsz + 4, n))));
    @@ packfile.c: int for_each_object_in_pack(struct packed_git *p,
      
      	if (flags & FOR_EACH_OBJECT_PACK_ORDER) {
     -		if (load_pack_revindex(the_repository, p))
    -+		if (load_pack_revindex(p->r, p))
    ++		if (load_pack_revindex(p->repo, p))
      			return -1;
      	}
      
    @@ packfile.c: static int add_promisor_object(const struct object_id *oid,
      	int we_parsed_object;
      
     -	obj = lookup_object(the_repository, oid);
    -+	obj = lookup_object(pack->r, oid);
    ++	obj = lookup_object(pack->repo, oid);
      	if (obj && obj->parsed) {
      		we_parsed_object = 0;
      	} else {
      		we_parsed_object = 1;
     -		obj = parse_object(the_repository, oid);
    -+		obj = parse_object(pack->r, oid);
    ++		obj = parse_object(pack->repo, oid);
      	}
      
      	if (!obj)
 3:  5b975cb6d6 !  3:  d5df50fa36 packfile: pass `repository` to static function in the file
    @@ packfile.c: static int open_packed_git_1(struct packed_git *p)
      	}
      
     -	while (pack_max_fds <= pack_open_fds && close_one_pack())
    -+	while (pack_max_fds <= pack_open_fds && close_one_pack(p->r))
    ++	while (pack_max_fds <= pack_open_fds && close_one_pack(p->repo))
      		; /* nothing */
      
      	p->pack_fd = git_open(p->pack_name);
    @@ packfile.c: unsigned char *use_pack(struct packed_git *p,
      		die(_("offset before end of packfile (broken .idx?)"));
      
     -	if (!win || !in_window(win, offset)) {
    -+	if (!win || !in_window(p->r, win, offset)) {
    ++	if (!win || !in_window(p->repo, win, offset)) {
      		if (win)
      			win->inuse_cnt--;
      		for (win = p->windows; win; win = win->next) {
     -			if (in_window(win, offset))
    -+			if (in_window(p->r, win, offset))
    ++			if (in_window(p->repo, win, offset))
      				break;
      		}
      		if (!win) {
 4:  13a166fcca !  4:  0107801c3b packfile: pass down repository to `odb_pack_name`
    @@ builtin/fast-import.c: static char *keep_pack(const char *curr_index_name)
      	int keep_fd;
      
     -	odb_pack_name(&name, pack_data->hash, "keep");
    -+	odb_pack_name(pack_data->r, &name, pack_data->hash, "keep");
    ++	odb_pack_name(pack_data->repo, &name, pack_data->hash, "keep");
      	keep_fd = odb_pack_keep(name.buf);
      	if (keep_fd < 0)
      		die_errno("cannot create keep file");
    @@ builtin/fast-import.c: static char *keep_pack(const char *curr_index_name)
      		die_errno("failed to write keep file");
      
     -	odb_pack_name(&name, pack_data->hash, "pack");
    -+	odb_pack_name(pack_data->r, &name, pack_data->hash, "pack");
    ++	odb_pack_name(pack_data->repo, &name, pack_data->hash, "pack");
      	if (finalize_object_file(pack_data->pack_name, name.buf))
      		die("cannot store pack file");
      
     -	odb_pack_name(&name, pack_data->hash, "idx");
    -+	odb_pack_name(pack_data->r, &name, pack_data->hash, "idx");
    ++	odb_pack_name(pack_data->repo, &name, pack_data->hash, "idx");
      	if (finalize_object_file(curr_index_name, name.buf))
      		die("cannot store index file");
      	free((void *)curr_index_name);
    @@ builtin/fast-import.c: static void unkeep_all_packs(void)
      	for (k = 0; k < pack_id; k++) {
      		struct packed_git *p = all_packs[k];
     -		odb_pack_name(&name, p->hash, "keep");
    -+		odb_pack_name(p->r, &name, p->hash, "keep");
    ++		odb_pack_name(p->repo, &name, p->hash, "keep");
      		unlink_or_warn(name.buf);
      	}
      	strbuf_release(&name);
    @@ builtin/pack-redundant.c: int cmd_pack_redundant(int argc, const char **argv, co
      	while (pl) {
      		printf("%s\n%s\n",
     -		       odb_pack_name(&idx_name, pl->pack->hash, "idx"),
    -+		       odb_pack_name(pl->pack->r, &idx_name, pl->pack->hash, "idx"),
    ++		       odb_pack_name(pl->pack->repo, &idx_name, pl->pack->hash, "idx"),
      		       pl->pack->pack_name);
      		pl = pl->next;
      	}
 5:  1fac06f19e !  5:  2d7608a367 packfile: pass down repository to `has_object[_kept]_pack`
    @@ builtin/pack-objects.c: static int want_found_object(const struct object_id *oid
      		if (ignore_packed_keep_in_core && p->pack_keep_in_core)
      			return 0;
     -		if (has_object_kept_pack(oid, flags))
    -+		if (has_object_kept_pack(p->r, oid, flags))
    ++		if (has_object_kept_pack(p->repo, oid, flags))
      			return 0;
      	}
      
 6:  a5fb3b1a4a =  6:  2c84026d02 packfile: pass down repository to `for_each_packed_object`
 7:  6e5951ceea =  7:  84b89c8a0e config: make `delta_base_cache_limit` a non-global variable
 8:  ec9061fbbd !  8:  5bbdc7124d config: make `packed_git_(limit|window_size)` non-global variables
    @@ packfile.c: unsigned char *use_pack(struct packed_git *p,
     +			size_t window_align;
      			off_t len;
      
    -+			repo_config(p->r, packfile_config, &config);
    ++			repo_config(p->repo, packfile_config, &config);
     +			window_align = config.packed_git_window_size / 2;
     +
      			if (p->pack_fd == -1 && open_packed_git(p))
 9:  c0b386412d !  9:  bb15a0be56 midx: add repository to `multi_pack_index` struct
    @@ midx.c: static struct multi_pack_index *load_multi_pack_index_one(const char *ob
      	m->data = midx_map;
      	m->data_len = midx_size;
      	m->local = local;
    -+	m->r = the_repository;
    ++	m->repo = the_repository;
      
      	m->signature = get_be32(m->data);
      	if (m->signature != MIDX_SIGNATURE)
    @@ midx.h: struct multi_pack_index {
      	const char **pack_names;
      	struct packed_git **packs;
     +
    -+	struct repository *r;
    ++	struct repository *repo;
     +
      	char object_dir[FLEX_ARRAY];
      };
    @@ pack-bitmap.c: static uint32_t bitmap_num_objects(struct bitmap_index *index)
     +static struct repository *bitmap_repo(struct bitmap_index *bitmap_git)
     +{
     +	if (bitmap_is_midx(bitmap_git))
    -+		return bitmap_git->midx->r;
    -+	return bitmap_git->pack->r;
    ++		return bitmap_git->midx->repo;
    ++	return bitmap_git->pack->repo;
     +}
     +
      static int load_bitmap_header(struct bitmap_index *index)
    @@ pack-bitmap.c: struct bitmap_index *prepare_bitmap_git(struct repository *r)
      struct bitmap_index *prepare_midx_bitmap_git(struct multi_pack_index *midx)
      {
     -	struct repository *r = the_repository;
    -+	struct repository *r = midx->r;
    ++	struct repository *r = midx->repo;
      	struct bitmap_index *bitmap_git = xcalloc(1, sizeof(*bitmap_git));
      
      	if (!open_midx_bitmap_1(bitmap_git, midx) && !load_bitmap(r, bitmap_git))
    @@ pack-bitmap.c: struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs,
     +	repo = bitmap_repo(bitmap_git);
     +
      	if (haves) {
    --		if (use_boundary_traversal) {
    + 		if (use_boundary_traversal) {
     -			trace2_region_enter("pack-bitmap", "haves/boundary", the_repository);
    -+		if (use_boundary_traversal)
    -+		{
     +			trace2_region_enter("pack-bitmap", "haves/boundary", repo);
      			haves_bitmap = find_boundary_objects(bitmap_git, revs, haves);
     -			trace2_region_leave("pack-bitmap", "haves/boundary", the_repository);
    --		} else {
    --			trace2_region_enter("pack-bitmap", "haves/classic", the_repository);
     +			trace2_region_leave("pack-bitmap", "haves/boundary", repo);
    -+		}
    -+		else
    -+		{
    + 		} else {
    +-			trace2_region_enter("pack-bitmap", "haves/classic", the_repository);
     +			trace2_region_enter("pack-bitmap", "haves/classic", repo);
      			revs->ignore_missing_links = 1;
      			haves_bitmap = find_objects(bitmap_git, revs, haves, NULL);
-- 
2.47.0


  parent reply	other threads:[~2024-10-31  9:39 UTC|newest]

Thread overview: 184+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-21  9:57 [PATCH 00/20] packfile: avoid using the 'the_repository' global variable Karthik Nayak
2024-10-21  9:57 ` [PATCH 01/20] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-10-21 21:06   ` Taylor Blau
2024-10-22  8:51     ` karthik nayak
2024-10-22 16:37       ` Taylor Blau
2024-10-21  9:57 ` [PATCH 02/20] packfile: pass down repository to `unuse_one_window` Karthik Nayak
2024-10-21 21:08   ` Taylor Blau
2024-10-21  9:57 ` [PATCH 03/20] packfile: pass down repository to `close_one_pack` Karthik Nayak
2024-10-21  9:57 ` [PATCH 04/20] packfile: pass down repository to `add_packed_git` Karthik Nayak
2024-10-21  9:57 ` [PATCH 05/20] packfile: pass down repository to `unpack_object_header` Karthik Nayak
2024-10-21  9:57 ` [PATCH 06/20] packfile: pass down repository to `get_delta_base` Karthik Nayak
2024-10-21  9:57 ` [PATCH 07/20] packfile: use provided repository in `packed_object_info` Karthik Nayak
2024-10-21  9:57 ` [PATCH 08/20] packfile: pass down repository to `unpack_compressed_entry` Karthik Nayak
2024-10-21  9:57 ` [PATCH 09/20] packfile: pass down repository to `nth_packed_object_id` Karthik Nayak
2024-10-21  9:57 ` [PATCH 10/20] packfile: pass down repository to `find_pack_entry_one` Karthik Nayak
2024-10-21  9:57 ` [PATCH 11/20] packfile: pass down repository to `fill_pack_entry` Karthik Nayak
2024-10-21  9:57 ` [PATCH 12/20] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-10-21  9:57 ` [PATCH 13/20] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-10-21  9:57 ` [PATCH 14/20] packfile: pass down repository to `is_promisor_object` Karthik Nayak
2024-10-21  9:57 ` [PATCH 15/20] object-store: pass down repository to `each_packed_object_fn` Karthik Nayak
2024-10-21  9:57 ` [PATCH 16/20] packfile: pass down repository to `open_pack_index` Karthik Nayak
2024-10-21  9:58 ` [PATCH 17/20] packfile: stop using 'the_hash_algo' Karthik Nayak
2024-10-21  9:58 ` [PATCH 18/20] packfile: pass down repository to `nth_packed_object_offset` Karthik Nayak
2024-10-21  9:58 ` [PATCH 19/20] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-10-21  9:58 ` [PATCH 20/20] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-10-21 21:03 ` [PATCH 00/20] packfile: avoid using the 'the_repository' global variable Taylor Blau
2024-10-27 21:23   ` karthik nayak
2024-10-27 23:54     ` Taylor Blau
2024-10-28  5:31     ` Jeff King
2024-10-28 13:36       ` karthik nayak
2024-10-28 15:21         ` Taylor Blau
2024-10-28 13:43 ` [PATCH v2 0/8] " Karthik Nayak
2024-10-28 13:43   ` [PATCH v2 1/8] packfile: add repository to struct `packed_git` Karthik Nayak
2024-10-28 16:05     ` Taylor Blau
2024-10-29 11:46       ` karthik nayak
2024-10-29 17:27         ` Taylor Blau
2024-10-28 13:43   ` [PATCH v2 2/8] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-10-28 16:08     ` Taylor Blau
2024-10-29 11:48       ` karthik nayak
2024-10-28 13:43   ` [PATCH v2 3/8] packfile: pass `repository` to static function in the file Karthik Nayak
2024-10-28 16:12     ` Taylor Blau
2024-10-28 13:43   ` [PATCH v2 4/8] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-10-28 16:14     ` Taylor Blau
2024-10-29  5:50     ` Jeff King
2024-10-29 12:45       ` karthik nayak
2024-10-29 17:33       ` Taylor Blau
2024-10-28 13:43   ` [PATCH v2 5/8] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-10-28 16:28     ` Taylor Blau
2024-10-29 16:03       ` karthik nayak
2024-10-28 13:43   ` [PATCH v2 6/8] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-10-28 13:43   ` [PATCH v2 7/8] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-10-28 16:38     ` me
2024-10-29 16:07       ` karthik nayak
2024-10-28 13:43   ` [PATCH v2 8/8] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-10-28 16:45     ` Taylor Blau
2024-10-29 16:09       ` karthik nayak
2024-10-29 17:48         ` Taylor Blau
2024-10-30 14:32 ` [PATCH v3 0/9] packfile: avoid using the 'the_repository' global variable Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 1/9] packfile: add repository to struct `packed_git` Karthik Nayak
2024-10-30 20:00     ` Taylor Blau
2024-10-30 14:32   ` [PATCH v3 2/9] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 3/9] packfile: pass `repository` to static function in the file Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 4/9] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 5/9] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 6/9] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 7/9] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 8/9] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-10-30 14:32   ` [PATCH v3 9/9] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-10-30 20:13     ` Taylor Blau
2024-10-31  9:34       ` karthik nayak
2024-10-31  9:39 ` Karthik Nayak [this message]
2024-10-31  9:39   ` [PATCH v4 1/9] packfile: add repository to struct `packed_git` Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 2/9] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 3/9] packfile: pass `repository` to static function in the file Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 4/9] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 5/9] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 6/9] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 7/9] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-10-31  9:39   ` [PATCH v4 8/9] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-11-01 17:45     ` Jeff King
2024-11-01 19:00       ` Taylor Blau
2024-11-04  9:35       ` karthik nayak
2024-10-31  9:39   ` [PATCH v4 9/9] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-10-31 20:05   ` [PATCH v4 0/9] packfile: avoid using the 'the_repository' global variable Taylor Blau
2024-11-01 14:36     ` Taylor Blau
2024-11-01 16:07       ` karthik nayak
2024-11-01 17:29         ` Jeff King
2024-11-04  9:39           ` karthik nayak
2024-11-04 17:27             ` Jeff King
2024-11-04 11:41 ` [PATCH v5 " Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 1/9] packfile: add repository to struct `packed_git` Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 2/9] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 3/9] packfile: pass `repository` to static function in the file Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 4/9] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 5/9] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 6/9] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 7/9] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-11-04 11:41   ` [PATCH v5 8/9] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-11-04 17:38     ` Jeff King
2024-11-05  9:50       ` karthik nayak
2024-11-04 11:41   ` [PATCH v5 9/9] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-11-04 17:32   ` [PATCH v5 0/9] packfile: avoid using the 'the_repository' global variable Jeff King
2024-11-05  9:43     ` karthik nayak
2024-11-07 14:10 ` [PATCH v6 " Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 1/9] packfile: add repository to struct `packed_git` Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 2/9] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 3/9] packfile: pass `repository` to static function in the file Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 4/9] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 5/9] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 6/9] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 7/9] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-11-07 14:10   ` [PATCH v6 8/9] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-11-08  3:42     ` Junio C Hamano
2024-11-08  9:27       ` karthik nayak
2024-11-07 14:10   ` [PATCH v6 9/9] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-11-08  7:49   ` [PATCH v6 0/9] packfile: avoid using the 'the_repository' global variable Junio C Hamano
2024-11-08  9:28     ` karthik nayak
2024-11-11 11:14 ` [PATCH v7 " Karthik Nayak
2024-11-11 11:14   ` [PATCH v7 1/9] packfile: add repository to struct `packed_git` Karthik Nayak
2024-11-13 12:41     ` Toon Claes
2024-11-13 13:04       ` karthik nayak
2024-11-13 23:56         ` Junio C Hamano
2024-11-14 10:04           ` karthik nayak
2024-11-20 22:30       ` Taylor Blau
2024-11-21 10:20         ` karthik nayak
2024-11-11 11:14   ` [PATCH v7 2/9] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-11-11 11:14   ` [PATCH v7 3/9] packfile: pass `repository` to static function in the file Karthik Nayak
2024-11-11 11:14   ` [PATCH v7 4/9] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-11-11 11:14   ` [PATCH v7 5/9] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-11-11 11:14   ` [PATCH v7 6/9] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-11-20 22:38     ` Taylor Blau
2024-11-20 22:48       ` [PATCH] packfile.c: remove unnecessary prepare_packed_git() call Taylor Blau
2024-11-21  9:13         ` Jeff King
2024-11-11 11:14   ` [PATCH v7 7/9] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-11-20 22:52     ` Taylor Blau
2024-11-21  9:06       ` Jeff King
2024-11-21 13:10       ` karthik nayak
2024-11-11 11:14   ` [PATCH v7 8/9] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-11-11 11:14   ` [PATCH v7 9/9] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-11-12  8:30   ` [PATCH v7 0/9] packfile: avoid using the 'the_repository' global variable Jeff King
2024-11-13 13:03     ` karthik nayak
2024-11-20 22:55   ` Taylor Blau
2024-11-21 13:12     ` karthik nayak
2024-11-22 10:08 ` [PATCH v8 00/10] " Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 01/10] packfile: add repository to struct `packed_git` Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 02/10] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 03/10] packfile: pass `repository` to static function in the file Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 04/10] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 05/10] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 06/10] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 07/10] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-11-26  7:25     ` Junio C Hamano
2024-11-26 10:54       ` karthik nayak
2024-11-22 10:08   ` [PATCH v8 08/10] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 09/10] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-11-22 10:08   ` [PATCH v8 10/10] packfile.c: remove unnecessary prepare_packed_git() call Karthik Nayak
2024-11-26 10:57 ` [PATCH v9 00/10] packfile: avoid using the 'the_repository' global variable Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 01/10] packfile: add repository to struct `packed_git` Karthik Nayak
2024-11-27  9:24     ` Kristoffer Haugsbakk
2024-11-27 12:15       ` karthik nayak
2024-11-26 10:57   ` [PATCH v9 02/10] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 03/10] packfile: pass `repository` to static function in the file Karthik Nayak
2024-11-27  7:44     ` Kristoffer Haugsbakk
2024-11-27  9:09       ` karthik nayak
2024-11-26 10:57   ` [PATCH v9 04/10] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 05/10] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 06/10] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 07/10] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 08/10] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 09/10] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-11-26 10:57   ` [PATCH v9 10/10] packfile.c: remove unnecessary prepare_packed_git() call Karthik Nayak
2024-12-03 14:43 ` [PATCH v10 00/10] packfile: avoid using the 'the_repository' global variable Karthik Nayak
2024-12-03 14:43   ` [PATCH v10 01/10] packfile: add repository to struct `packed_git` Karthik Nayak
2024-12-03 14:43   ` [PATCH v10 02/10] packfile: use `repository` from `packed_git` directly Karthik Nayak
2024-12-03 14:43   ` [PATCH v10 03/10] packfile: pass `repository` to static function in the file Karthik Nayak
2024-12-03 14:43   ` [PATCH v10 04/10] packfile: pass down repository to `odb_pack_name` Karthik Nayak
2024-12-03 14:43   ` [PATCH v10 05/10] packfile: pass down repository to `has_object[_kept]_pack` Karthik Nayak
2024-12-03 14:44   ` [PATCH v10 06/10] packfile: pass down repository to `for_each_packed_object` Karthik Nayak
2024-12-03 14:44   ` [PATCH v10 07/10] config: make `delta_base_cache_limit` a non-global variable Karthik Nayak
2024-12-03 14:44   ` [PATCH v10 08/10] config: make `packed_git_(limit|window_size)` non-global variables Karthik Nayak
2024-12-03 14:44   ` [PATCH v10 09/10] midx: add repository to `multi_pack_index` struct Karthik Nayak
2024-12-03 14:44   ` [PATCH v10 10/10] packfile.c: remove unnecessary prepare_packed_git() call Karthik Nayak
2024-12-03 16:46   ` [PATCH v10 00/10] packfile: avoid using the 'the_repository' global variable Kristoffer Haugsbakk
2024-12-03 23:24     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1730366765.git.karthik.188@gmail.com \
    --to=karthik.188@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.