git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Stefan Beller <sbeller@google.com>
To: git@vger.kernel.org
Cc: Stefan Beller <sbeller@google.com>, Jonathan Nieder <jrnieder@gmail.com>
Subject: [PATCH 074/194] object-store: allow sha1_object_info to handle arbitrary repositories
Date: Mon,  5 Feb 2018 15:55:35 -0800	[thread overview]
Message-ID: <20180205235735.216710-54-sbeller@google.com> (raw)
In-Reply-To: <20180205235735.216710-1-sbeller@google.com>

This involves also adapting sha1_object_info_extended and a some
internal functions that are used to implement these. It all has to
happen in one patch, because of a single recursive chain of calls visits
all these functions.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
 object-store.h | 13 ++++++-------
 packfile.c     | 58 ++++++++++++++++++++++++++++------------------------------
 packfile.h     |  8 ++++----
 sha1_file.c    | 24 +++++++++++++-----------
 4 files changed, 51 insertions(+), 52 deletions(-)

diff --git a/object-store.h b/object-store.h
index 4ff60e3be0..6930cfef82 100644
--- a/object-store.h
+++ b/object-store.h
@@ -91,10 +91,7 @@ static inline void *read_sha1_file(const unsigned char *sha1, enum object_type *
 }
 
 /* Read and unpack a sha1 file into memory, write memory to a sha1 file */
-
-#define sha1_object_info(r, sha1, size) \
-	sha1_object_info_##r(sha1, size)
-extern int sha1_object_info_the_repository(const unsigned char *, unsigned long *);
+extern int sha1_object_info(struct repository *r, const unsigned char *sha1, unsigned long *sizep);
 extern int hash_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *sha1);
 extern int write_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *return_sha1);
 extern int hash_sha1_file_literally(const void *buf, unsigned long len, const char *type, struct object_id *oid, unsigned flags);
@@ -166,8 +163,10 @@ struct object_info {
 #define OBJECT_INFO_SKIP_CACHED 4
 /* Do not retry packed storage after checking packed and loose storage */
 #define OBJECT_INFO_QUICK 8
-#define sha1_object_info_extended(r, s, oi, f) \
-		sha1_object_info_extended_##r(s, oi, f)
-extern int sha1_object_info_extended_the_repository(const unsigned char *, struct object_info *, unsigned flags);
+
+extern int sha1_object_info_extended(struct repository *r,
+				     const unsigned char *sha1,
+				     struct object_info *oi,
+				     unsigned flags);
 
 #endif /* OBJECT_STORE_H */
diff --git a/packfile.c b/packfile.c
index 178d2e0ddd..6a8d5edf6d 100644
--- a/packfile.c
+++ b/packfile.c
@@ -1082,9 +1082,9 @@ static const unsigned char *get_delta_base_sha1(struct packed_git *p,
 		return NULL;
 }
 
-#define retry_bad_packed_offset(r, p, o) \
-	retry_bad_packed_offset_##r(p, o)
-static int retry_bad_packed_offset_the_repository(struct packed_git *p, off_t obj_offset)
+static int retry_bad_packed_offset(struct repository *r,
+				   struct packed_git *p,
+				   off_t obj_offset)
 {
 	int type;
 	struct revindex_entry *revidx;
@@ -1094,7 +1094,7 @@ static int retry_bad_packed_offset_the_repository(struct packed_git *p, off_t ob
 		return OBJ_BAD;
 	sha1 = nth_packed_object_sha1(p, revidx->nr);
 	mark_bad_packed_object(p, sha1);
-	type = sha1_object_info(the_repository, sha1, NULL);
+	type = sha1_object_info(r, sha1, NULL);
 	if (type <= OBJ_NONE)
 		return OBJ_BAD;
 	return type;
@@ -1102,13 +1102,12 @@ static int retry_bad_packed_offset_the_repository(struct packed_git *p, off_t ob
 
 #define POI_STACK_PREALLOC 64
 
-#define packed_to_object_type(r, p, o, t, w, c) \
-	packed_to_object_type_##r(p, o, t, w, c)
-static enum object_type packed_to_object_type_the_repository(struct packed_git *p,
-							     off_t obj_offset,
-							     enum object_type type,
-							     struct pack_window **w_curs,
-							     off_t curpos)
+static enum object_type packed_to_object_type(struct repository *r,
+					      struct packed_git *p,
+					      off_t obj_offset,
+					      enum object_type type,
+					      struct pack_window **w_curs,
+					      off_t curpos)
 {
 	off_t small_poi_stack[POI_STACK_PREALLOC];
 	off_t *poi_stack = small_poi_stack;
@@ -1135,7 +1134,7 @@ static enum object_type packed_to_object_type_the_repository(struct packed_git *
 		if (type <= OBJ_NONE) {
 			/* If getting the base itself fails, we first
 			 * retry the base, otherwise unwind */
-			type = retry_bad_packed_offset(the_repository, p, base_offset);
+			type = retry_bad_packed_offset(r, p, base_offset);
 			if (type > OBJ_NONE)
 				goto out;
 			goto unwind;
@@ -1163,7 +1162,7 @@ static enum object_type packed_to_object_type_the_repository(struct packed_git *
 unwind:
 	while (poi_stack_nr) {
 		obj_offset = poi_stack[--poi_stack_nr];
-		type = retry_bad_packed_offset(the_repository, p, obj_offset);
+		type = retry_bad_packed_offset(r, p, obj_offset);
 		if (type > OBJ_NONE)
 			goto out;
 	}
@@ -1250,15 +1249,15 @@ static void detach_delta_base_cache_entry(struct delta_base_cache_entry *ent)
 	free(ent);
 }
 
-#define cache_or_unpack_entry(r, p, bo, bs, t) cache_or_unpack_entry_##r(p, bo, bs, t)
-static void *cache_or_unpack_entry_the_repository(struct packed_git *p, off_t base_offset,
-	unsigned long *base_size, enum object_type *type)
+static void *cache_or_unpack_entry(struct repository *r, struct packed_git *p,
+				   off_t base_offset, unsigned long *base_size,
+				   enum object_type *type)
 {
 	struct delta_base_cache_entry *ent;
 
 	ent = get_delta_base_cache_entry(p, base_offset);
 	if (!ent)
-		return unpack_entry(the_repository, p, base_offset, type, base_size);
+		return unpack_entry(r, p, base_offset, type, base_size);
 
 	if (type)
 		*type = ent->type;
@@ -1312,8 +1311,8 @@ static void add_delta_base_cache(struct packed_git *p, off_t base_offset,
 	hashmap_add(&delta_base_cache, ent);
 }
 
-int packed_object_info_the_repository(struct packed_git *p, off_t obj_offset,
-				      struct object_info *oi)
+int packed_object_info(struct repository *r, struct packed_git *p,
+		       off_t obj_offset, struct object_info *oi)
 {
 	struct pack_window *w_curs = NULL;
 	unsigned long size;
@@ -1325,7 +1324,7 @@ int packed_object_info_the_repository(struct packed_git *p, off_t obj_offset,
 	 * a "real" type later if the caller is interested.
 	 */
 	if (oi->contentp) {
-		*oi->contentp = cache_or_unpack_entry(the_repository, p, obj_offset, oi->sizep,
+		*oi->contentp = cache_or_unpack_entry(r, p, obj_offset, oi->sizep,
 						      &type);
 		if (!*oi->contentp)
 			type = OBJ_BAD;
@@ -1359,7 +1358,7 @@ int packed_object_info_the_repository(struct packed_git *p, off_t obj_offset,
 
 	if (oi->typep || oi->typename) {
 		enum object_type ptot;
-		ptot = packed_to_object_type(the_repository, p, obj_offset,
+		ptot = packed_to_object_type(r, p, obj_offset,
 					     type, &w_curs, curpos);
 		if (oi->typep)
 			*oi->typep = ptot;
@@ -1448,10 +1447,10 @@ struct unpack_entry_stack_ent {
 	unsigned long size;
 };
 
-#define read_object(r, s, t, sz) read_object_##r(s, t, sz)
-static void *read_object_the_repository(const unsigned char *sha1,
-					enum object_type *type,
-					unsigned long *size)
+static void *read_object(struct repository *r,
+			 const unsigned char *sha1,
+			 enum object_type *type,
+			 unsigned long *size)
 {
 	struct object_info oi = OBJECT_INFO_INIT;
 	void *content;
@@ -1459,14 +1458,13 @@ static void *read_object_the_repository(const unsigned char *sha1,
 	oi.sizep = size;
 	oi.contentp = &content;
 
-	if (sha1_object_info_extended(the_repository, sha1, &oi, 0) < 0)
+	if (sha1_object_info_extended(r, sha1, &oi, 0) < 0)
 		return NULL;
 	return content;
 }
 
-void *unpack_entry_the_repository(struct packed_git *p, off_t obj_offset,
-				  enum object_type *final_type,
-				  unsigned long *final_size)
+void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
+		   enum object_type *final_type, unsigned long *final_size)
 {
 	struct pack_window *w_curs = NULL;
 	off_t curpos = obj_offset;
@@ -1596,7 +1594,7 @@ void *unpack_entry_the_repository(struct packed_git *p, off_t obj_offset,
 				      sha1_to_hex(base_sha1), (uintmax_t)obj_offset,
 				      p->pack_name);
 				mark_bad_packed_object(p, base_sha1);
-				base = read_object(the_repository, base_sha1, &type, &base_size);
+				base = read_object(r, base_sha1, &type, &base_size);
 				external_base = base;
 			}
 		}
diff --git a/packfile.h b/packfile.h
index 6d10871d25..f8d2825cce 100644
--- a/packfile.h
+++ b/packfile.h
@@ -125,8 +125,7 @@ extern off_t nth_packed_object_offset(const struct packed_git *, uint32_t n);
 extern off_t find_pack_entry_one(const unsigned char *sha1, struct packed_git *);
 
 extern int is_pack_valid(struct packed_git *);
-#define unpack_entry(r, p, of, ot, s) unpack_entry_##r(p, of, ot, s)
-extern void *unpack_entry_the_repository(struct packed_git *, off_t, enum object_type *, unsigned long *);
+extern void *unpack_entry(struct repository *r, struct packed_git *, off_t, enum object_type *, unsigned long *);
 extern unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep);
 extern unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
 extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
@@ -136,8 +135,9 @@ extern void release_pack_memory(size_t);
 /* global flag to enable extra checks when accessing packed objects */
 extern int do_check_packed_object_crc;
 
-#define packed_object_info(r, p, o, oi) packed_object_info_##r(p, o, oi)
-extern int packed_object_info_the_repository(struct packed_git *pack, off_t offset, struct object_info *);
+extern int packed_object_info(struct repository *r,
+			      struct packed_git *pack,
+			      off_t offset, struct object_info *);
 
 extern void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
 extern const struct packed_git *has_packed_and_bad(const unsigned char *sha1);
diff --git a/sha1_file.c b/sha1_file.c
index 7e06ece5f3..c296b76329 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1237,13 +1237,14 @@ static int sha1_loose_object_info(struct repository *r,
 	return (status < 0) ? status : 0;
 }
 
-int sha1_object_info_extended_the_repository(const unsigned char *sha1, struct object_info *oi, unsigned flags)
+int sha1_object_info_extended(struct repository *r, const unsigned char *sha1,
+			      struct object_info *oi, unsigned flags)
 {
 	static struct object_info blank_oi = OBJECT_INFO_INIT;
 	struct pack_entry e;
 	int rtype;
 	const unsigned char *real = (flags & OBJECT_INFO_LOOKUP_REPLACE) ?
-				    lookup_replace_object(the_repository, sha1) :
+				    lookup_replace_object(r, sha1) :
 				    sha1;
 
 	if (is_null_sha1(real))
@@ -1272,17 +1273,17 @@ int sha1_object_info_extended_the_repository(const unsigned char *sha1, struct o
 		}
 	}
 
-	if (!find_pack_entry(the_repository, real, &e)) {
+	if (!find_pack_entry(r, real, &e)) {
 		/* Most likely it's a loose object. */
-		if (!sha1_loose_object_info(the_repository, real, oi, flags))
+		if (!sha1_loose_object_info(r, real, oi, flags))
 			return 0;
 
 		/* Not a loose object; someone else may have just packed it. */
 		if (flags & OBJECT_INFO_QUICK) {
 			return -1;
 		} else {
-			reprepare_packed_git(the_repository);
-			if (!find_pack_entry(the_repository, real, &e))
+			reprepare_packed_git(r);
+			if (!find_pack_entry(r, real, &e))
 				return -1;
 		}
 	}
@@ -1294,11 +1295,10 @@ int sha1_object_info_extended_the_repository(const unsigned char *sha1, struct o
 		 */
 		return 0;
 
-	rtype = packed_object_info(the_repository, e.p, e.offset, oi);
+	rtype = packed_object_info(r, e.p, e.offset, oi);
 	if (rtype < 0) {
 		mark_bad_packed_object(e.p, real);
-		return sha1_object_info_extended(the_repository, real, oi,
-						 0);
+		return sha1_object_info_extended(r, real, oi, 0);
 	} else if (oi->whence == OI_PACKED) {
 		oi->u.packed.offset = e.offset;
 		oi->u.packed.pack = e.p;
@@ -1310,14 +1310,16 @@ int sha1_object_info_extended_the_repository(const unsigned char *sha1, struct o
 }
 
 /* returns enum object_type or negative */
-int sha1_object_info_the_repository(const unsigned char *sha1, unsigned long *sizep)
+int sha1_object_info(struct repository *r,
+		     const unsigned char *sha1,
+		     unsigned long *sizep)
 {
 	enum object_type type;
 	struct object_info oi = OBJECT_INFO_INIT;
 
 	oi.typep = &type;
 	oi.sizep = sizep;
-	if (sha1_object_info_extended(the_repository, sha1, &oi,
+	if (sha1_object_info_extended(r, sha1, &oi,
 				      OBJECT_INFO_LOOKUP_REPLACE) < 0)
 		return -1;
 	return type;
-- 
2.15.1.433.g936d1b9894.dirty


  parent reply	other threads:[~2018-02-06  0:09 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05 23:51 [RFC PATCH 000/194] Moving global state into the repository object Stefan Beller
2018-02-05 23:51 ` [PATCH 001/194] repository: introduce object store field Stefan Beller
2018-02-05 23:51 ` [PATCH 002/194] object-store: move alt_odb_list and alt_odb_tail to object store Stefan Beller
2018-02-05 23:51 ` [PATCH 003/194] object-store: move packed_git and packed_git_mru " Stefan Beller
2018-02-09 22:09   ` Junio C Hamano
2018-02-12 19:00     ` Stefan Beller
2018-02-12 21:04       ` Junio C Hamano
2018-02-12 21:40         ` René Scharfe
2018-02-12 21:48           ` Junio C Hamano
2018-02-13 18:52             ` René Scharfe
2018-02-13 19:45               ` Stefan Beller
2018-02-14  1:26               ` Junio C Hamano
2018-02-12 21:40       ` René Scharfe
2018-02-05 23:51 ` [PATCH 004/194] pack: move prepare_packed_git_run_once " Stefan Beller
2018-02-05 23:51 ` [PATCH 005/194] pack: move approximate object count " Stefan Beller
2018-02-05 23:52 ` [PATCH 006/194] sha1_file: add repository argument to alt_odb_usable Stefan Beller
2018-02-05 23:52 ` [PATCH 007/194] sha1_file: add repository argument to link_alt_odb_entry Stefan Beller
2018-02-05 23:52 ` [PATCH 008/194] sha1_file: add repository argument to read_info_alternates Stefan Beller
2018-02-05 23:52 ` [PATCH 009/194] sha1_file: add repository argument to link_alt_odb_entries Stefan Beller
2018-02-05 23:52 ` [PATCH 010/194] sha1_file: add repository argument to stat_sha1_file Stefan Beller
2018-02-05 23:52 ` [PATCH 011/194] sha1_file: add repository argument to open_sha1_file Stefan Beller
2018-02-05 23:52 ` [PATCH 012/194] sha1_file: add repository argument to map_sha1_file_1 Stefan Beller
2018-02-05 23:52 ` [PATCH 013/194] sha1_file: add repository argument to sha1_loose_object_info Stefan Beller
2018-02-05 23:52 ` [PATCH 014/194] object-store: add repository argument to prepare_alt_odb Stefan Beller
2018-02-05 23:52 ` [PATCH 015/194] object-store: add repository argument to foreach_alt_odb Stefan Beller
2018-02-05 23:52 ` [PATCH 016/194] pack: add repository argument to install_packed_git Stefan Beller
2018-02-05 23:52 ` [PATCH 017/194] pack: add repository argument to prepare_packed_git_one Stefan Beller
2018-02-05 23:52 ` [PATCH 018/194] pack: add repository argument to rearrange_packed_git Stefan Beller
2018-02-05 23:52 ` [PATCH 019/194] pack: add repository argument to prepare_packed_git_mru Stefan Beller
2018-02-05 23:52 ` [PATCH 020/194] pack: add repository argument to prepare_packed_git Stefan Beller
2018-02-05 23:52 ` [PATCH 021/194] pack: add repository argument to reprepare_packed_git Stefan Beller
2018-02-05 23:54 ` Stefan Beller
2018-02-05 23:54   ` [PATCH 022/194] pack: add repository argument to sha1_file_name Stefan Beller
2018-02-05 23:54   ` [PATCH 023/194] pack: add repository argument to map_sha1_file Stefan Beller
2018-02-05 23:54   ` [PATCH 024/194] sha1_file: allow alt_odb_usable to handle arbitrary repositories Stefan Beller
2018-02-05 23:54   ` [PATCH 025/194] object-store: allow prepare_alt_odb " Stefan Beller
2018-02-06  1:19     ` brian m. carlson
2018-02-06 13:44       ` Derrick Stolee
2018-02-06 17:48       ` Stefan Beller
2018-02-08  1:47         ` brian m. carlson
2018-02-07 22:06     ` Jonathan Tan
2018-02-05 23:54   ` [PATCH 026/194] object-store: allow foreach_alt_odb " Stefan Beller
2018-02-05 23:54   ` [PATCH 027/194] pack: allow install_packed_git " Stefan Beller
2018-02-05 23:54   ` [PATCH 028/194] pack: allow rearrange_packed_git " Stefan Beller
2018-02-05 23:54   ` [PATCH 029/194] pack: allow prepare_packed_git_mru " Stefan Beller
2018-02-05 23:54   ` [PATCH 030/194] pack: allow prepare_packed_git_one " Stefan Beller
2018-02-05 23:54   ` [PATCH 031/194] pack: allow prepare_packed_git " Stefan Beller
2018-02-05 23:54   ` [PATCH 032/194] pack: allow reprepare_packed_git " Stefan Beller
2018-02-05 23:54   ` [PATCH 033/194] pack: allow sha1_file_name " Stefan Beller
2018-02-05 23:54   ` [PATCH 034/194] pack: allow stat_sha1_file " Stefan Beller
2018-02-05 23:54   ` [PATCH 035/194] pack: allow open_sha1_file " Stefan Beller
2018-02-05 23:54   ` [PATCH 036/194] pack: allow map_sha1_file_1 " Stefan Beller
2018-02-05 23:54   ` [PATCH 037/194] pack: allow map_sha1_file " Stefan Beller
2018-02-05 23:54   ` [PATCH 038/194] pack: allow sha1_loose_object_info " Stefan Beller
2018-02-07 22:33     ` Jonathan Tan
2018-02-07 23:31       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 039/194] replace_object.c: rename to use dash in file name Stefan Beller
2018-02-05 23:55   ` [PATCH 040/194] replace-object: move replace_object to object store Stefan Beller
2018-02-05 23:55   ` [PATCH 041/194] sha1_file: add repository argument to sha1_object_info_extended Stefan Beller
2018-02-05 23:55   ` [PATCH 042/194] object-store: move alternates API to new alternates.h Stefan Beller
2018-02-06  1:44     ` brian m. carlson
2018-02-06 17:53       ` Stefan Beller
2018-02-09 23:12       ` Junio C Hamano
2018-02-06  4:52     ` Eric Sunshine
2018-02-06 17:52       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 043/194] object-store: move loose object functions to new loose-object.h Stefan Beller
2018-02-05 23:55   ` [PATCH 044/194] pack: move struct pack_window and pack_entry to packfile.h Stefan Beller
2018-02-05 23:55   ` [PATCH 045/194] object-store: move object access functions to object-store.h Stefan Beller
2018-02-05 23:55   ` [PATCH 046/194] object-store: move replace_objects back to object-store Stefan Beller
2018-02-09 23:15     ` Junio C Hamano
2018-02-12 19:08       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 047/194] object-store: move lookup_replace_object to replace-object.h Stefan Beller
2018-02-05 23:55   ` [PATCH 048/194] replace-object: add repository argument to do_lookup_replace_object Stefan Beller
2018-02-05 23:55   ` [PATCH 049/194] replace-object: move replace objects prepared flag to object store Stefan Beller
2018-02-05 23:55   ` [PATCH 050/194] replace-object: check_replace_refs is safe in multi repo environment Stefan Beller
2018-02-06  4:30     ` Eric Sunshine
2018-02-05 23:55   ` [PATCH 051/194] refs: add repository argument to for_each_replace_ref Stefan Beller
2018-02-05 23:55   ` [PATCH 052/194] refs: add repository argument to get_main_ref_store Stefan Beller
2018-02-05 23:55   ` [PATCH 053/194] replace-object: add repository argument to register_replace_object Stefan Beller
2018-02-05 23:55   ` [PATCH 054/194] replace-object: add repository argument to register_replace_ref Stefan Beller
2018-02-05 23:55   ` [PATCH 055/194] replace-object: add repository argument to replace_object_pos Stefan Beller
2018-02-05 23:55   ` [PATCH 056/194] replace-object: allow replace_object_pos to handle arbitrary repositories Stefan Beller
2018-02-05 23:55   ` [PATCH 057/194] replace-object: allow register_replace_object " Stefan Beller
2018-02-05 23:55   ` [PATCH 058/194] replace-object: add repository argument to prepare_replace_object Stefan Beller
2018-02-05 23:55   ` [PATCH 059/194] refs: store the main ref store inside the repository struct Stefan Beller
2018-02-06  4:27     ` Eric Sunshine
2018-02-06 18:01       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 060/194] refs: allow for_each_replace_ref to handle arbitrary repositories Stefan Beller
2018-02-05 23:55   ` [PATCH 061/194] replace-object: allow prepare_replace_object " Stefan Beller
2018-02-05 23:55   ` [PATCH 062/194] replace_object: allow do_lookup_replace_object " Stefan Beller
2018-02-05 23:55   ` [PATCH 063/194] replace-object: add repository argument to lookup_replace_object Stefan Beller
2018-02-05 23:55   ` [PATCH 064/194] repository: allow lookup_replace_object to handle arbitrary repositories Stefan Beller
2018-02-05 23:55   ` [PATCH 065/194] object-store: add repository argument to sha1_object_info Stefan Beller
2018-02-06  1:55     ` brian m. carlson
2018-02-05 23:55   ` [PATCH 066/194] pack: add repository argument to retry_bad_packed_offset Stefan Beller
2018-02-05 23:55   ` [PATCH 067/194] pack: add repository argument to packed_to_object_type Stefan Beller
2018-02-05 23:55   ` [PATCH 068/194] pack: add repository argument to packed_object_info Stefan Beller
2018-02-05 23:55   ` [PATCH 069/194] pack: add repository argument to find_pack_entry Stefan Beller
2018-02-05 23:55   ` [PATCH 070/194] packfile: add repository argument to read_object Stefan Beller
2018-02-05 23:55   ` [PATCH 071/194] packfile: add repository argument to unpack_entry Stefan Beller
2018-02-05 23:55   ` [PATCH 072/194] packfile: add repository argument to cache_or_unpack_entry Stefan Beller
2018-02-05 23:55   ` [PATCH 073/194] pack: allow find_pack_entry to handle arbitrary repositories Stefan Beller
2018-02-05 23:55   ` Stefan Beller [this message]
2018-02-05 23:55   ` [PATCH 075/194] fetch, push: do not use submodule as alternate in has_commits check Stefan Beller
2018-02-06  4:20     ` Eric Sunshine
2018-02-06 20:33       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 076/194] push: add test showing bad interaction of replace refs and submodules Stefan Beller
2018-02-06  2:20     ` brian m. carlson
2018-02-06 22:43       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 077/194] replace_object: allow register_replace_ref to handle arbitrary repositories Stefan Beller
2018-02-05 23:55   ` [PATCH 078/194] cache.h: migrate the definition of object_id to object.h Stefan Beller
2018-02-05 23:55   ` [PATCH 079/194] repository: introduce object parser field Stefan Beller
2018-02-05 23:55   ` [PATCH 080/194] object: add repository argument to parse_object Stefan Beller
2018-02-05 23:55   ` [PATCH 081/194] object: add repository argument to create_object Stefan Beller
2018-02-05 23:55   ` [PATCH 082/194] object: add repository argument to lookup_object Stefan Beller
2018-02-05 23:55   ` [PATCH 083/194] object: add repository argument to grow_object_hash Stefan Beller
2018-02-05 23:55   ` [PATCH 084/194] blob: add repository argument to lookup_blob Stefan Beller
2018-02-05 23:55   ` [PATCH 085/194] tree: add repository argument to lookup_tree Stefan Beller
2018-02-05 23:55   ` [PATCH 086/194] tag: add repository argument to lookup_tag Stefan Beller
2018-02-05 23:55   ` [PATCH 087/194] tag: add repository argument to parse_tag_buffer Stefan Beller
2018-02-05 23:55   ` [PATCH 088/194] tag: add repository argument to deref_tag Stefan Beller
2018-02-05 23:55   ` [PATCH 089/194] object: add repository argument to lookup_commit_reference_gently Stefan Beller
2018-02-05 23:55   ` [PATCH 090/194] object: add repository argument to lookup_commit_reference Stefan Beller
2018-02-05 23:55   ` [PATCH 091/194] object: add repository argument to lookup_commit Stefan Beller
2018-02-05 23:55   ` [PATCH 092/194] object: move grafts to object parser Stefan Beller
2018-02-06  4:07     ` Eric Sunshine
2018-02-06 18:04       ` Stefan Beller
2018-02-05 23:55   ` [PATCH 093/194] object: add repository argument to commit_graft_pos Stefan Beller
2018-02-05 23:55   ` [PATCH 094/194] commit: add repository argument to parse_commit_buffer Stefan Beller
2018-02-05 23:55   ` [PATCH 095/194] object: add repository argument to register_commit_graft Stefan Beller
2018-02-05 23:55   ` [PATCH 096/194] object: add repository argument to read_graft_file Stefan Beller
2018-02-05 23:55   ` [PATCH 097/194] object: add repository argument to prepare_commit_graft Stefan Beller
2018-02-05 23:55   ` [PATCH 098/194] object: add repository argument to lookup_commit_graft Stefan Beller
2018-02-06  0:16 ` [PATCH 099/194] object: allow grow_object_hash to handle arbitrary repositories Stefan Beller
2018-02-06  0:16   ` [PATCH 100/194] object: allow create_object " Stefan Beller
2018-02-06  0:16   ` [PATCH 101/194] object: allow lookup_object " Stefan Beller
2018-02-06  0:16   ` [PATCH 102/194] object: add repository argument to lookup_unknown_object Stefan Beller
2018-02-06  0:16   ` [PATCH 103/194] object: allow lookup_unknown_object to handle arbitrary repositories Stefan Beller
2018-02-06  0:16   ` [PATCH 104/194] object: add repository argument to parse_object_buffer Stefan Beller
2018-02-06  0:16   ` [PATCH 105/194] repository: keep track of all open repositories Stefan Beller
2018-02-06  0:16   ` [PATCH 106/194] Rename sha1_object_info.cocci to object_store.cocci Stefan Beller
2018-02-06  0:16   ` [PATCH 107/194] alternates: add repository argument to add_to_alternates_file Stefan Beller
2018-02-06  0:16   ` [PATCH 108/194] alternates: add repository argument to add_to_alternates_memory Stefan Beller
2018-02-06  0:16   ` [PATCH 109/194] object-store: move check_sha1_signature to object-store.h Stefan Beller
2018-02-06  0:16   ` [PATCH 110/194] object-store: add repository argument to check_sha1_signature Stefan Beller
2018-02-06  0:16   ` [PATCH 111/194] object-store: add repository argument to read_object Stefan Beller
2018-02-06  0:16   ` [PATCH 112/194] object-store: add repository argument to read_sha1_file_extended Stefan Beller
2018-02-06  0:16   ` [PATCH 113/194] object-store: add repository argument to read_sha1_file Stefan Beller
2018-02-06  0:16   ` [PATCH 114/194] object: move read_object_with_reference to object.h Stefan Beller
2018-02-06  0:16   ` [PATCH 115/194] packfile: add repository argument to has_packed_and_bad Stefan Beller
2018-02-06  0:16   ` [PATCH 116/194] packfile: allow has_packed_and_bad to handle arbitrary repositories Stefan Beller
2018-02-06  0:16   ` [PATCH 117/194] streaming: add repository argument to open_istream_fn Stefan Beller
2018-02-06  0:16   ` [PATCH 119/194] streaming: add repository argument to istream_source Stefan Beller
2018-02-06  0:16   ` [PATCH 120/194] streaming: allow istream_source to handle arbitrary repositories Stefan Beller
2018-02-06  0:16   ` [PATCH 121/194] sha1_file: allow read_object " Stefan Beller
2018-02-06  0:16   ` [PATCH 122/194] object-store.h: allow read_sha1_file{_extended} " Stefan Beller
2018-02-06  0:16   ` [PATCH 123/194] streaming: allow open_istream_incore " Stefan Beller
2018-02-06  0:16   ` [PATCH 124/194] streaming: allow open_istream_pack_non_delta " Stefan Beller
2018-02-06  0:16   ` [PATCH 125/194] streaming: allow open_istream_loose " Stefan Beller
2018-02-06  0:16   ` [PATCH 126/194] streaming: allow open_istream " Stefan Beller
2018-02-06  0:16   ` [PATCH 127/194] alternates: convert add_to_alternates_memory to handle arbitrary repos Stefan Beller
2018-02-06  0:16   ` [PATCH 128/194] object: add repository argument to object_as_type Stefan Beller
2018-02-06  0:16   ` [PATCH 129/194] alloc: add repository argument to alloc_blob_node Stefan Beller
2018-02-06  0:16   ` [PATCH 130/194] alloc: add repository argument to alloc_tree_node Stefan Beller
2018-02-06  0:16   ` [PATCH 131/194] alloc: add repository argument to alloc_commit_node Stefan Beller
2018-02-06  0:16   ` [PATCH 132/194] alloc: add repository argument to alloc_tag_node Stefan Beller
2018-02-06  0:16   ` [PATCH 133/194] alloc: add repository argument to alloc_object_node Stefan Beller
2018-02-06  0:16   ` [PATCH 134/194] alloc: add repository argument to alloc_report Stefan Beller
2018-02-06  0:16   ` [PATCH 135/194] alloc: add repository argument to alloc_commit_index Stefan Beller
2018-02-06  0:16   ` [PATCH 136/194] alloc: allow arbitrary repositories for alloc functions Stefan Beller
2018-02-06  3:35     ` Eric Sunshine
2018-02-06  0:16   ` [PATCH 137/194] object: allow object_as_type to handle arbitrary repositories Stefan Beller
2018-02-06  0:16   ` [PATCH 138/194] commit: allow lookup_commit " Stefan Beller
2018-02-06  0:16   ` [PATCH 139/194] sha1_file: allow add_to_alternates_file " Stefan Beller
2018-02-06  0:16   ` [PATCH 140/194] commit: convert commit_graft_pos() " Stefan Beller
2018-02-06  0:16   ` [PATCH 141/194] commit: convert register_commit_graft " Stefan Beller
2018-02-06  0:16   ` [PATCH 142/194] commit: convert read_graft_file " Stefan Beller
2018-02-06  0:16   ` [PATCH 143/194] object: add repository argument to parse_commit_gently Stefan Beller
2018-02-06  0:16   ` [PATCH 144/194] commit: add repository argument to parse_commit Stefan Beller
2018-02-06  0:17   ` [PATCH 145/194] commit: add repository argument to set_commit_buffer Stefan Beller
2018-02-06  0:17   ` [PATCH 146/194] commit: add repository argument to get_cached_commit_buffer Stefan Beller
2018-02-06  0:17   ` [PATCH 147/194] commit: add repository argument to unuse_commit_buffer Stefan Beller
2018-02-06  0:17   ` [PATCH 148/194] commit: add repository argument to free_commit_buffer Stefan Beller
2018-02-06  0:17   ` [PATCH 149/194] commit: allow commit buffer functions to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 150/194] tree: allow lookup_tree " Stefan Beller
2018-02-06  0:17   ` [PATCH 151/194] cache: convert get_graft_file " Stefan Beller
2018-02-06  0:17   ` [PATCH 152/194] shallow: add repository argument to set_alternate_shallow_file Stefan Beller
2018-02-06  0:17   ` [PATCH 153/194] shallow: add repository argument to register_shallow Stefan Beller
2018-02-06  0:17   ` [PATCH 154/194] shallow: add repository argument to check_shallow_file_for_update Stefan Beller
2018-02-06  0:17   ` [PATCH 155/194] shallow: add repository argument to is_repository_shallow Stefan Beller
2018-02-06  0:17   ` [PATCH 156/194] migrate cached path to use the_repository Stefan Beller
2018-02-06  0:17   ` [PATCH 157/194] shallow: migrate shallow information into the object parser Stefan Beller
2018-02-06  0:17   ` [PATCH 158/194] commit: allow prepare_commit_graft to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 159/194] commit: allow lookup_commit_graft " Stefan Beller
2018-02-06  0:17   ` [PATCH 160/194] commit: allow arbitrary repository argument for parse_commit_buffer Stefan Beller
2018-02-06  0:17   ` [PATCH 161/194] commit: allow parse_commit_gently to handle arbitrary repository Stefan Beller
2018-02-06  0:17   ` [PATCH 162/194] commit: add repository argument to get_merge_bases_many_0 Stefan Beller
2018-02-06  0:17   ` [PATCH 163/194] commit: add repository argument to merge_bases_many Stefan Beller
2018-02-06  0:17   ` [PATCH 164/194] commit: add repository argument to paint_down_to_common Stefan Beller
2018-02-06  0:17   ` [PATCH 165/194] commit: allow parse_commit to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 166/194] commit: allow paint_down_to_common " Stefan Beller
2018-02-06  0:17   ` [PATCH 167/194] commit: allow merge_bases_many " Stefan Beller
2018-02-06  0:17   ` [PATCH 168/194] commit: add repository argument to remove_redundant Stefan Beller
2018-02-06  0:17   ` [PATCH 169/194] commit: allow remove_redundant to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 170/194] commit: allow get_merge_bases_many_0 " Stefan Beller
2018-02-06  0:17   ` [PATCH 171/194] commit: add repository argument to get_merge_bases Stefan Beller
2018-02-06  0:17   ` [PATCH 172/194] commit: allow get_merge_bases to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 173/194] blob: allow lookup_blob " Stefan Beller
2018-02-06  0:17   ` [PATCH 174/194] tag: allow lookup_tag " Stefan Beller
2018-02-06  0:17   ` [PATCH 175/194] tag: allow parse_tag_buffer " Stefan Beller
2018-02-06  0:17   ` [PATCH 176/194] object: allow parse_object_buffer " Stefan Beller
2018-02-06  0:17   ` [PATCH 177/194] objects: allow check_sha1_signature " Stefan Beller
2018-02-06  0:17   ` [PATCH 178/194] object: allow parse_object " Stefan Beller
2018-02-06  0:17   ` [PATCH 179/194] tag: allow deref_tag " Stefan Beller
2018-02-06  0:17   ` [PATCH 180/194] commit: allow lookup_commit_reference_gently " Stefan Beller
2018-02-06  0:17   ` [PATCH 181/194] commit: allow lookup_commit_reference " Stefan Beller
2018-02-06  0:17   ` [PATCH 182/194] commit: add repository argument to get_commit_buffer Stefan Beller
2018-02-06  0:17   ` [PATCH 183/194] commit: add repository argument to logmsg_reencode Stefan Beller
2018-02-06  0:17   ` [PATCH 184/194] pretty: add repository argument to format_commit_message Stefan Beller
2018-02-06  0:17   ` [PATCH 185/194] commit: allow get_commit_buffer to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 186/194] pretty: allow logmsg_reencode " Stefan Beller
2018-02-06  0:17   ` [PATCH 187/194] commit: add repository argument to in_merge_bases_many Stefan Beller
2018-02-06  0:17   ` [PATCH 188/194] commit: add repository argument to in_merge_bases Stefan Beller
2018-02-06  0:17   ` [PATCH 189/194] commit: allow in_merge_bases_many to handle arbitrary repositories Stefan Beller
2018-02-06  0:17   ` [PATCH 190/194] commit: allow in_merge_bases " Stefan Beller
2018-02-06  0:17   ` [PATCH 191/194] pretty: allow format_commit_message " Stefan Beller
2018-02-06  0:17   ` [PATCH 192/194] submodule: add repository argument to print_submodule_summary Stefan Beller
2018-02-06  0:17   ` [PATCH 193/194] submodule: Reorder open_submodule function Stefan Beller
2018-02-06  0:17   ` [PATCH 194/194] submodule: use submodule repos for object lookup Stefan Beller
2018-02-06  0:54 ` [RFC PATCH 000/194] Moving global state into the repository object Stefan Beller
2018-02-06  3:32 ` brian m. carlson
2018-02-06 20:25 ` Stefan Beller
2018-02-06 23:46   ` Stefan Beller
2018-02-07  9:54   ` Eric Sunshine
2018-02-07 11:48 ` Duy Nguyen
2018-02-07 18:06   ` Stefan Beller
2018-02-10 10:36     ` Duy Nguyen
2018-02-07 16:39 ` Jeff Hostetler
2018-02-08 15:42 ` Elijah Newren

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=20180205235735.216710-54-sbeller@google.com \
    --to=sbeller@google.com \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).