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

[PATCH 06/19] refs: add repository argument to get_main_ref_store

From
Stefan Beller <sbeller@google.com>
Date
Apr 6, 2018, 23:21 UTC
Message-ID
<20180406232136.253950-7-sbeller@google.com>
In-Reply-To
<20180406232136.253950-1-sbeller@google.com>

Add a repository argument to allow the get_main_ref_store caller to be more specific about which repository to handle. This is a small mechanical change; it doesn't change the implementation to handle repositories other than the_repository yet.

As with the previous commits, use a macro to catch callers passing a repository other than the_repository at compile time.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
# Conflicts:
#	t/helper/test-ref-store.c
---
 builtin/pack-refs.c       |  3 +-
 refs.c                    | 67 ++++++++++++++++++++-------------------
 refs.h                    |  4 ++-
 revision.c                |  5 +--
 t/helper/test-ref-store.c |  3 +-
 5 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c
index b106a392a4..f3353564f9 100644
--- a/builtin/pack-refs.c
+++ b/builtin/pack-refs.c
@@ -1,6 +1,7 @@
 #include "builtin.h"
 #include "parse-options.h"
 #include "refs.h"
+#include "repository.h"
 
 static char const * const pack_refs_usage[] = {
 	N_("git pack-refs [<options>]"),
@@ -17,5 +18,5 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
 	};
 	if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0))
 		usage_with_options(pack_refs_usage, opts);
-	return refs_pack_refs(get_main_ref_store(), flags);
+	return refs_pack_refs(get_main_ref_store(the_repository), flags);
 }
diff --git a/refs.c b/refs.c
index 20ba82b434..addc9d4934 100644
--- a/refs.c
+++ b/refs.c
@@ -13,6 +13,7 @@
 #include "tag.h"
 #include "submodule.h"
 #include "worktree.h"
+#include "repository.h"
 
 /*
  * List of all available backends
@@ -206,7 +207,7 @@ char *refs_resolve_refdup(struct ref_store *refs,
 char *resolve_refdup(const char *refname, int resolve_flags,
 		     struct object_id *oid, int *flags)
 {
-	return refs_resolve_refdup(get_main_ref_store(),
+	return refs_resolve_refdup(get_main_ref_store(the_repository),
 				   refname, resolve_flags,
 				   oid, flags);
 }
@@ -228,7 +229,7 @@ int refs_read_ref_full(struct ref_store *refs, const char *refname,
 
 int read_ref_full(const char *refname, int resolve_flags, struct object_id *oid, int *flags)
 {
-	return refs_read_ref_full(get_main_ref_store(), refname,
+	return refs_read_ref_full(get_main_ref_store(the_repository), refname,
 				  resolve_flags, oid, flags);
 }
 
@@ -375,7 +376,7 @@ int refs_for_each_tag_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
 
 int for_each_tag_ref(each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_tag_ref(get_main_ref_store(), fn, cb_data);
+	return refs_for_each_tag_ref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 int refs_for_each_branch_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
@@ -385,7 +386,7 @@ int refs_for_each_branch_ref(struct ref_store *refs, each_ref_fn fn, void *cb_da
 
 int for_each_branch_ref(each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_branch_ref(get_main_ref_store(), fn, cb_data);
+	return refs_for_each_branch_ref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 int refs_for_each_remote_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
@@ -395,7 +396,7 @@ int refs_for_each_remote_ref(struct ref_store *refs, each_ref_fn fn, void *cb_da
 
 int for_each_remote_ref(each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_remote_ref(get_main_ref_store(), fn, cb_data);
+	return refs_for_each_remote_ref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 int head_ref_namespaced(each_ref_fn fn, void *cb_data)
@@ -730,7 +731,7 @@ int refs_delete_ref(struct ref_store *refs, const char *msg,
 	struct strbuf err = STRBUF_INIT;
 
 	if (ref_type(refname) == REF_TYPE_PSEUDOREF) {
-		assert(refs == get_main_ref_store());
+		assert(refs == get_main_ref_store(the_repository));
 		return delete_pseudoref(refname, old_oid);
 	}
 
@@ -752,7 +753,7 @@ int refs_delete_ref(struct ref_store *refs, const char *msg,
 int delete_ref(const char *msg, const char *refname,
 	       const struct object_id *old_oid, unsigned int flags)
 {
-	return refs_delete_ref(get_main_ref_store(), msg, refname,
+	return refs_delete_ref(get_main_ref_store(the_repository), msg, refname,
 			       old_oid, flags);
 }
 
@@ -928,7 +929,7 @@ struct ref_transaction *ref_store_transaction_begin(struct ref_store *refs,
 
 struct ref_transaction *ref_transaction_begin(struct strbuf *err)
 {
-	return ref_store_transaction_begin(get_main_ref_store(), err);
+	return ref_store_transaction_begin(get_main_ref_store(the_repository), err);
 }
 
 void ref_transaction_free(struct ref_transaction *transaction)
@@ -1060,7 +1061,7 @@ int refs_update_ref(struct ref_store *refs, const char *msg,
 	int ret = 0;
 
 	if (ref_type(refname) == REF_TYPE_PSEUDOREF) {
-		assert(refs == get_main_ref_store());
+		assert(refs == get_main_ref_store(the_repository));
 		ret = write_pseudoref(refname, new_oid, old_oid, &err);
 	} else {
 		t = ref_store_transaction_begin(refs, &err);
@@ -1099,7 +1100,7 @@ int update_ref(const char *msg, const char *refname,
 	       const struct object_id *old_oid,
 	       unsigned int flags, enum action_on_err onerr)
 {
-	return refs_update_ref(get_main_ref_store(), msg, refname, new_oid,
+	return refs_update_ref(get_main_ref_store(the_repository), msg, refname, new_oid,
 			       old_oid, flags, onerr);
 }
 
@@ -1320,7 +1321,7 @@ int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
 
 int head_ref(each_ref_fn fn, void *cb_data)
 {
-	return refs_head_ref(get_main_ref_store(), fn, cb_data);
+	return refs_head_ref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 struct ref_iterator *refs_ref_iterator_begin(
@@ -1379,7 +1380,7 @@ int refs_for_each_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
 
 int for_each_ref(each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_ref(get_main_ref_store(), fn, cb_data);
+	return refs_for_each_ref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 int refs_for_each_ref_in(struct ref_store *refs, const char *prefix,
@@ -1390,7 +1391,7 @@ int refs_for_each_ref_in(struct ref_store *refs, const char *prefix,
 
 int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_ref_in(get_main_ref_store(), prefix, fn, cb_data);
+	return refs_for_each_ref_in(get_main_ref_store(the_repository), prefix, fn, cb_data);
 }
 
 int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data, unsigned int broken)
@@ -1399,7 +1400,7 @@ int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data, unsig
 
 	if (broken)
 		flag = DO_FOR_EACH_INCLUDE_BROKEN;
-	return do_for_each_ref(get_main_ref_store(),
+	return do_for_each_ref(get_main_ref_store(the_repository),
 			       prefix, fn, 0, flag, cb_data);
 }
 
@@ -1416,7 +1417,7 @@ int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
 
 int for_each_replace_ref(each_ref_fn fn, void *cb_data)
 {
-	return do_for_each_ref(get_main_ref_store(),
+	return do_for_each_ref(get_main_ref_store(the_repository),
 			       git_replace_ref_base, fn,
 			       strlen(git_replace_ref_base),
 			       DO_FOR_EACH_INCLUDE_BROKEN, cb_data);
@@ -1427,7 +1428,7 @@ int for_each_namespaced_ref(each_ref_fn fn, void *cb_data)
 	struct strbuf buf = STRBUF_INIT;
 	int ret;
 	strbuf_addf(&buf, "%srefs/", get_git_namespace());
-	ret = do_for_each_ref(get_main_ref_store(),
+	ret = do_for_each_ref(get_main_ref_store(the_repository),
 			      buf.buf, fn, 0, 0, cb_data);
 	strbuf_release(&buf);
 	return ret;
@@ -1441,7 +1442,7 @@ int refs_for_each_rawref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
 
 int for_each_rawref(each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_rawref(get_main_ref_store(), fn, cb_data);
+	return refs_for_each_rawref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 int refs_read_raw_ref(struct ref_store *ref_store,
@@ -1547,7 +1548,7 @@ const char *refs_resolve_ref_unsafe(struct ref_store *refs,
 /* backend functions */
 int refs_init_db(struct strbuf *err)
 {
-	struct ref_store *refs = get_main_ref_store();
+	struct ref_store *refs = get_main_ref_store(the_repository);
 
 	return refs->be->init_db(refs, err);
 }
@@ -1555,7 +1556,7 @@ int refs_init_db(struct strbuf *err)
 const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
 			       struct object_id *oid, int *flags)
 {
-	return refs_resolve_ref_unsafe(get_main_ref_store(), refname,
+	return refs_resolve_ref_unsafe(get_main_ref_store(the_repository), refname,
 				       resolve_flags, oid, flags);
 }
 
@@ -1651,7 +1652,7 @@ static struct ref_store *ref_store_init(const char *gitdir,
 	return refs;
 }
 
-struct ref_store *get_main_ref_store(void)
+struct ref_store *get_main_ref_store_the_repository(void)
 {
 	if (main_ref_store)
 		return main_ref_store;
@@ -1726,7 +1727,7 @@ struct ref_store *get_worktree_ref_store(const struct worktree *wt)
 	const char *id;
 
 	if (wt->is_current)
-		return get_main_ref_store();
+		return get_main_ref_store(the_repository);
 
 	id = wt->id ? wt->id : "/";
 	refs = lookup_ref_store_map(&worktree_ref_stores, id);
@@ -1782,7 +1783,7 @@ int refs_peel_ref(struct ref_store *refs, const char *refname,
 
 int peel_ref(const char *refname, struct object_id *oid)
 {
-	return refs_peel_ref(get_main_ref_store(), refname, oid);
+	return refs_peel_ref(get_main_ref_store(the_repository), refname, oid);
 }
 
 int refs_create_symref(struct ref_store *refs,
@@ -1798,7 +1799,7 @@ int refs_create_symref(struct ref_store *refs,
 int create_symref(const char *ref_target, const char *refs_heads_master,
 		  const char *logmsg)
 {
-	return refs_create_symref(get_main_ref_store(), ref_target,
+	return refs_create_symref(get_main_ref_store(the_repository), ref_target,
 				  refs_heads_master, logmsg);
 }
 
@@ -2006,7 +2007,7 @@ int refs_for_each_reflog(struct ref_store *refs, each_ref_fn fn, void *cb_data)
 
 int for_each_reflog(each_ref_fn fn, void *cb_data)
 {
-	return refs_for_each_reflog(get_main_ref_store(), fn, cb_data);
+	return refs_for_each_reflog(get_main_ref_store(the_repository), fn, cb_data);
 }
 
 int refs_for_each_reflog_ent_reverse(struct ref_store *refs,
@@ -2021,7 +2022,7 @@ int refs_for_each_reflog_ent_reverse(struct ref_store *refs,
 int for_each_reflog_ent_reverse(const char *refname, each_reflog_ent_fn fn,
 				void *cb_data)
 {
-	return refs_for_each_reflog_ent_reverse(get_main_ref_store(),
+	return refs_for_each_reflog_ent_reverse(get_main_ref_store(the_repository),
 						refname, fn, cb_data);
 }
 
@@ -2034,7 +2035,7 @@ int refs_for_each_reflog_ent(struct ref_store *refs, const char *refname,
 int for_each_reflog_ent(const char *refname, each_reflog_ent_fn fn,
 			void *cb_data)
 {
-	return refs_for_each_reflog_ent(get_main_ref_store(), refname,
+	return refs_for_each_reflog_ent(get_main_ref_store(the_repository), refname,
 					fn, cb_data);
 }
 
@@ -2045,7 +2046,7 @@ int refs_reflog_exists(struct ref_store *refs, const char *refname)
 
 int reflog_exists(const char *refname)
 {
-	return refs_reflog_exists(get_main_ref_store(), refname);
+	return refs_reflog_exists(get_main_ref_store(the_repository), refname);
 }
 
 int refs_create_reflog(struct ref_store *refs, const char *refname,
@@ -2057,7 +2058,7 @@ int refs_create_reflog(struct ref_store *refs, const char *refname,
 int safe_create_reflog(const char *refname, int force_create,
 		       struct strbuf *err)
 {
-	return refs_create_reflog(get_main_ref_store(), refname,
+	return refs_create_reflog(get_main_ref_store(the_repository), refname,
 				  force_create, err);
 }
 
@@ -2068,7 +2069,7 @@ int refs_delete_reflog(struct ref_store *refs, const char *refname)
 
 int delete_reflog(const char *refname)
 {
-	return refs_delete_reflog(get_main_ref_store(), refname);
+	return refs_delete_reflog(get_main_ref_store(the_repository), refname);
 }
 
 int refs_reflog_expire(struct ref_store *refs,
@@ -2091,7 +2092,7 @@ int reflog_expire(const char *refname, const struct object_id *oid,
 		  reflog_expiry_cleanup_fn cleanup_fn,
 		  void *policy_cb_data)
 {
-	return refs_reflog_expire(get_main_ref_store(),
+	return refs_reflog_expire(get_main_ref_store(the_repository),
 				  refname, oid, flags,
 				  prepare_fn, should_prune_fn,
 				  cleanup_fn, policy_cb_data);
@@ -2114,7 +2115,7 @@ int refs_delete_refs(struct ref_store *refs, const char *msg,
 int delete_refs(const char *msg, struct string_list *refnames,
 		unsigned int flags)
 {
-	return refs_delete_refs(get_main_ref_store(), msg, refnames, flags);
+	return refs_delete_refs(get_main_ref_store(the_repository), msg, refnames, flags);
 }
 
 int refs_rename_ref(struct ref_store *refs, const char *oldref,
@@ -2125,7 +2126,7 @@ int refs_rename_ref(struct ref_store *refs, const char *oldref,
 
 int rename_ref(const char *oldref, const char *newref, const char *logmsg)
 {
-	return refs_rename_ref(get_main_ref_store(), oldref, newref, logmsg);
+	return refs_rename_ref(get_main_ref_store(the_repository), oldref, newref, logmsg);
 }
 
 int refs_copy_existing_ref(struct ref_store *refs, const char *oldref,
@@ -2136,5 +2137,5 @@ int refs_copy_existing_ref(struct ref_store *refs, const char *oldref,
 
 int copy_existing_ref(const char *oldref, const char *newref, const char *logmsg)
 {
-	return refs_copy_existing_ref(get_main_ref_store(), oldref, newref, logmsg);
+	return refs_copy_existing_ref(get_main_ref_store(the_repository), oldref, newref, logmsg);
 }
diff --git a/refs.h b/refs.h
index 01be5ae32f..0d013377ce 100644
--- a/refs.h
+++ b/refs.h
@@ -758,7 +758,9 @@ int reflog_expire(const char *refname, const struct object_id *oid,
 
 int ref_storage_backend_exists(const char *name);
 
-struct ref_store *get_main_ref_store(void);
+#define get_main_ref_store(r) \
+	get_main_ref_store_##r()
+struct ref_store *get_main_ref_store_the_repository(void);
 /*
  * Return the ref_store instance for the specified submodule. For the
  * main repository, use submodule==NULL; such a call cannot fail. For
diff --git a/revision.c b/revision.c
index 5ce9b93baa..8fa5a3c7aa 100644
--- a/revision.c
+++ b/revision.c
@@ -6,6 +6,7 @@
 #include "diff.h"
 #include "refs.h"
 #include "revision.h"
+#include "repository.h"
 #include "graph.h"
 #include "grep.h"
 #include "reflog-walk.h"
@@ -1289,7 +1290,7 @@ void add_reflogs_to_pending(struct rev_info *revs, unsigned flags)
 
 	cb.all_revs = revs;
 	cb.all_flags = flags;
-	cb.refs = get_main_ref_store();
+	cb.refs = get_main_ref_store(the_repository);
 	for_each_reflog(handle_one_reflog, &cb);
 
 	if (!revs->single_worktree)
@@ -2182,7 +2183,7 @@ static int handle_revision_pseudo_opt(const char *submodule,
 			die("BUG: --single-worktree cannot be used together with submodule");
 		refs = get_submodule_ref_store(submodule);
 	} else
-		refs = get_main_ref_store();
+		refs = get_main_ref_store(the_repository);
 
 	/*
 	 * NOTE!
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index 7314b5943e..e8c328ec0e 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -2,6 +2,7 @@
 #include "refs.h"
 #include "worktree.h"
 #include "object-store.h"
+#include "repository.h"
 
 static const char *notnull(const char *arg, const char *name)
 {
@@ -22,7 +23,7 @@ static const char **get_store(const char **argv, struct ref_store **refs)
 	if (!argv[0]) {
 		die("ref store required");
 	} else if (!strcmp(argv[0], "main")) {
-		*refs = get_main_ref_store();
+		*refs = get_main_ref_store(the_repository);
 	} else if (skip_prefix(argv[0], "submodule:", &gitdir)) {
 		struct strbuf sb = STRBUF_INIT;
 		int ret;
-- 
2.17.0.484.g0c8726318c-goog
Previous: Stefan BellerNext: Eric Sunshine
Message 22 of 91 in “object-store refactoring 3 (replace objects, main ref store)”
  1. 00/19 object-store refactoring 3 (replace objects, main ref store)Stefan Beller, Apr 6, 2018
  2. 01/19 replace_object.c: rename to use dash in file nameStefan Beller, Apr 6, 2018
  3. 02/19 replace-object: move replace_object to object storeStefan Beller, Apr 6, 2018
  4. Derrick StoleeApr 9, 2018
  5. 03/19 object-store: move lookup_replace_object to replace-object.hStefan Beller, Apr 6, 2018
  6. 08/19 replace-object: add repository argument to replace_object_posStefan Beller, Apr 6, 2018
  7. 09/19 replace-object: add repository argument to register_replace_objectStefan Beller, Apr 6, 2018
  8. 11/19 replace-object: add repository argument to do_lookup_replace_objectStefan Beller, Apr 6, 2018
  9. 12/19 replace-object: add repository argument to lookup_replace_objectStefan Beller, Apr 6, 2018
  10. 13/19 refs: store the main ref store inside the repository structStefan Beller, Apr 6, 2018
  11. Eric SunshineApr 7, 2018
  12. 15/19 replace-object: allow replace_object_pos to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  13. 14/19 refs: allow for_each_replace_ref to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  14. 17/19 replace-object: allow prepare_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  15. 16/19 replace-object: allow register_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  16. 19/19 replace-object: allow lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  17. 18/19 replace-object: allow do_lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  18. 10/19 replace-object: add repository argument to prepare_replace_objectStefan Beller, Apr 6, 2018
  19. 04/19 replace-object: move replace objects prepared flag to object storeStefan Beller, Apr 6, 2018
  20. 07/19 refs: add repository argument to for_each_replace_refStefan Beller, Apr 6, 2018
  21. 05/19 replace-object: check_replace_refs is safe in multi repo environmentStefan Beller, Apr 6, 2018
  22. 06/19 refs: add repository argument to get_main_ref_storeStefan Beller, Apr 6, 2018
  23. Eric SunshineApr 7, 2018
  24. Stefan BellerApr 9, 2018
  25. René ScharfeApr 7, 2018
  26. Stefan BellerApr 9, 2018
  27. Duy NguyenApr 7, 2018
  28. Stefan BellerApr 9, 2018
  29. Derrick StoleeApr 9, 2018
  30. 00/16 object-store refactoring 3 (replace objects, main ref store)Stefan Beller, Apr 9, 2018
  31. 01/16 replace_object: use oidmapStefan Beller, Apr 9, 2018
  32. Junio C HamanoApr 10, 2018
  33. 03/16 replace-object: move replace_map to object storeStefan Beller, Apr 9, 2018
  34. Junio C HamanoApr 10, 2018
  35. 02/16 replace_object.c: rename to use dash in file nameStefan Beller, Apr 9, 2018
  36. Junio C HamanoApr 10, 2018
  37. Stefan BellerApr 10, 2018
  38. 0/6 Rename files to use dashes instead of underscoresStefan Beller, Apr 10, 2018
  39. 1/6 write_or_die.c: rename to use dashes in file nameStefan Beller, Apr 10, 2018
  40. 2/6 unicode_width.h: rename to use dash in file nameStefan Beller, Apr 10, 2018
  41. 3/6 exec_cmd: rename to use dash in file nameStefan Beller, Apr 10, 2018
  42. 5/6 sha1_file.c: rename to use dash in file nameStefan Beller, Apr 10, 2018
  43. 6/6 replace_object.c: rename to use dash in file nameStefan Beller, Apr 10, 2018
  44. 4/6 sha1_name.c: rename to use dash in file nameStefan Beller, Apr 10, 2018
  45. Stefan BellerApr 10, 2018
  46. Johannes SchindelinApr 10, 2018
  47. Stefan BellerApr 10, 2018
  48. brian m. carlsonApr 11, 2018
  49. 04/16 object-store: move lookup_replace_object to replace-object.hStefan Beller, Apr 9, 2018
  50. 06/16 replace-object: check_replace_refs is safe in multi repo environmentStefan Beller, Apr 9, 2018
  51. Junio C HamanoApr 10, 2018
  52. 05/16 replace-object: eliminate replace objects prepared flagStefan Beller, Apr 9, 2018
  53. Junio C HamanoApr 10, 2018
  54. René ScharfeApr 10, 2018
  55. 07/16 refs: add repository argument to get_main_ref_storeStefan Beller, Apr 9, 2018
  56. Michael HaggertyApr 10, 2018
  57. Stefan BellerApr 10, 2018
  58. 08/16 refs: add repository argument to for_each_replace_refStefan Beller, Apr 9, 2018
  59. 09/16 replace-object: add repository argument to prepare_replace_objectStefan Beller, Apr 9, 2018
  60. 13/16 refs: allow for_each_replace_ref to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  61. 12/16 refs: store the main ref store inside the repository structStefan Beller, Apr 9, 2018
  62. Brandon WilliamsApr 9, 2018
  63. Stefan BellerApr 9, 2018
  64. Brandon WilliamsApr 9, 2018
  65. Michael HaggertyApr 10, 2018
  66. Stefan BellerApr 10, 2018
  67. 15/16 replace-object: allow do_lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  68. 14/16 replace-object: allow prepare_replace_object to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  69. 16/16 replace-object: allow lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  70. 11/16 replace-object: add repository argument to lookup_replace_objectStefan Beller, Apr 9, 2018
  71. 10/16 replace-object: add repository argument to do_lookup_replace_objectStefan Beller, Apr 9, 2018
  72. Brandon WilliamsApr 9, 2018
  73. Stefan BellerApr 9, 2018
  74. 00/15 replace_object.c: rename to use dash in file nameStefan Beller, Apr 12, 2018
  75. 01/15 replace_object: use oidmapStefan Beller, Apr 12, 2018
  76. 02/15 replace-object: move replace_map to object storeStefan Beller, Apr 12, 2018
  77. 03/15 object-store: move lookup_replace_object to replace-object.hStefan Beller, Apr 12, 2018
  78. 05/15 replace-object: check_replace_refs is safe in multi repo environmentStefan Beller, Apr 12, 2018
  79. 07/15 refs: add repository argument to for_each_replace_refStefan Beller, Apr 12, 2018
  80. 04/15 replace-object: eliminate replace objects prepared flagStefan Beller, Apr 12, 2018
  81. 13/15 replace-object: allow prepare_replace_object to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  82. 12/15 refs: allow for_each_replace_ref to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  83. 14/15 replace-object: allow do_lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  84. 15/15 replace-object: allow lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  85. 06/15 refs: add repository argument to get_main_ref_storeStefan Beller, Apr 12, 2018
  86. 11/15 refs: store the main ref store inside the repository structStefan Beller, Apr 12, 2018
  87. 08/15 replace-object: add repository argument to prepare_replace_objectStefan Beller, Apr 12, 2018
  88. 09/15 replace-object: add repository argument to do_lookup_replace_objectStefan Beller, Apr 12, 2018
  89. 10/15 replace-object: add repository argument to lookup_replace_objectStefan Beller, Apr 12, 2018
  90. Derrick StoleeApr 12, 2018
  91. Stefan BellerApr 9, 2018

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.