refs: add repository argument to get_main_ref_store
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller committed
Apr 11, 2018 at 17:21 UTC
23a3f0cb16caa1cc79cf0af42a92bff61fe955a4
5 files changed
+44
-38
builtin/pack-refs.c
+2
-1
@@ -1,6 +1,7 @@
1
#include "builtin.h"
2
#include "parse-options.h"
3
#include "refs.h"
4
+#include "repository.h"
5
6
static char const * const pack_refs_usage[] = {
7
N_("git pack-refs [<options>]"),
@@ -17,5 +18,5 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
18
};
19
if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0))
20
usage_with_options(pack_refs_usage, opts);
20
- return refs_pack_refs(get_main_ref_store(), flags);
21
+ return refs_pack_refs(get_main_ref_store(the_repository), flags);
22
}
refs.c
+34
-33
@@ -13,6 +13,7 @@
13
#include "tag.h"
14
#include "submodule.h"
15
#include "worktree.h"
16
+#include "repository.h"
17
18
/*
19
* List of all available backends
@@ -206,7 +207,7 @@ char *refs_resolve_refdup(struct ref_store *refs,
207
char *resolve_refdup(const char *refname, int resolve_flags,
208
struct object_id *oid, int *flags)
209
{
209
- return refs_resolve_refdup(get_main_ref_store(),
210
+ return refs_resolve_refdup(get_main_ref_store(the_repository),
211
refname, resolve_flags,
212
oid, flags);
213
}
@@ -228,7 +229,7 @@ int refs_read_ref_full(struct ref_store *refs, const char *refname,
229
230
int read_ref_full(const char *refname, int resolve_flags, struct object_id *oid, int *flags)
231
{
231
- return refs_read_ref_full(get_main_ref_store(), refname,
232
+ return refs_read_ref_full(get_main_ref_store(the_repository), refname,
233
resolve_flags, oid, flags);
234
}
235
@@ -375,7 +376,7 @@ int refs_for_each_tag_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
376
377
int for_each_tag_ref(each_ref_fn fn, void *cb_data)
378
{
378
- return refs_for_each_tag_ref(get_main_ref_store(), fn, cb_data);
379
+ return refs_for_each_tag_ref(get_main_ref_store(the_repository), fn, cb_data);
380
}
381
382
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
386
387
int for_each_branch_ref(each_ref_fn fn, void *cb_data)
388
{
388
- return refs_for_each_branch_ref(get_main_ref_store(), fn, cb_data);
389
+ return refs_for_each_branch_ref(get_main_ref_store(the_repository), fn, cb_data);
390
}
391
392
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
396
397
int for_each_remote_ref(each_ref_fn fn, void *cb_data)
398
{
398
- return refs_for_each_remote_ref(get_main_ref_store(), fn, cb_data);
399
+ return refs_for_each_remote_ref(get_main_ref_store(the_repository), fn, cb_data);
400
}
401
402
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,
731
struct strbuf err = STRBUF_INIT;
732
733
if (ref_type(refname) == REF_TYPE_PSEUDOREF) {
733
- assert(refs == get_main_ref_store());
734
+ assert(refs == get_main_ref_store(the_repository));
735
return delete_pseudoref(refname, old_oid);
736
}
737
@@ -752,7 +753,7 @@ int refs_delete_ref(struct ref_store *refs, const char *msg,
753
int delete_ref(const char *msg, const char *refname,
754
const struct object_id *old_oid, unsigned int flags)
755
{
755
- return refs_delete_ref(get_main_ref_store(), msg, refname,
756
+ return refs_delete_ref(get_main_ref_store(the_repository), msg, refname,
757
old_oid, flags);
758
}
759
@@ -928,7 +929,7 @@ struct ref_transaction *ref_store_transaction_begin(struct ref_store *refs,
929
930
struct ref_transaction *ref_transaction_begin(struct strbuf *err)
931
{
931
- return ref_store_transaction_begin(get_main_ref_store(), err);
932
+ return ref_store_transaction_begin(get_main_ref_store(the_repository), err);
933
}
934
935
void ref_transaction_free(struct ref_transaction *transaction)
@@ -1060,7 +1061,7 @@ int refs_update_ref(struct ref_store *refs, const char *msg,
1061
int ret = 0;
1062
1063
if (ref_type(refname) == REF_TYPE_PSEUDOREF) {
1063
- assert(refs == get_main_ref_store());
1064
+ assert(refs == get_main_ref_store(the_repository));
1065
ret = write_pseudoref(refname, new_oid, old_oid, &err);
1066
} else {
1067
t = ref_store_transaction_begin(refs, &err);
@@ -1099,7 +1100,7 @@ int update_ref(const char *msg, const char *refname,
1100
const struct object_id *old_oid,
1101
unsigned int flags, enum action_on_err onerr)
1102
{
1102
- return refs_update_ref(get_main_ref_store(), msg, refname, new_oid,
1103
+ return refs_update_ref(get_main_ref_store(the_repository), msg, refname, new_oid,
1104
old_oid, flags, onerr);
1105
}
1106
@@ -1320,7 +1321,7 @@ int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
1321
1322
int head_ref(each_ref_fn fn, void *cb_data)
1323
{
1323
- return refs_head_ref(get_main_ref_store(), fn, cb_data);
1324
+ return refs_head_ref(get_main_ref_store(the_repository), fn, cb_data);
1325
}
1326
1327
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)
1380
1381
int for_each_ref(each_ref_fn fn, void *cb_data)
1382
{
1382
- return refs_for_each_ref(get_main_ref_store(), fn, cb_data);
1383
+ return refs_for_each_ref(get_main_ref_store(the_repository), fn, cb_data);
1384
}
1385
1386
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,
1391
1392
int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data)
1393
{
1393
- return refs_for_each_ref_in(get_main_ref_store(), prefix, fn, cb_data);
1394
+ return refs_for_each_ref_in(get_main_ref_store(the_repository), prefix, fn, cb_data);
1395
}
1396
1397
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
1400
1401
if (broken)
1402
flag = DO_FOR_EACH_INCLUDE_BROKEN;
1402
- return do_for_each_ref(get_main_ref_store(),
1403
+ return do_for_each_ref(get_main_ref_store(the_repository),
1404
prefix, fn, 0, flag, cb_data);
1405
}
1406
@@ -1416,7 +1417,7 @@ int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
1417
1418
int for_each_replace_ref(each_ref_fn fn, void *cb_data)
1419
{
1419
- return do_for_each_ref(get_main_ref_store(),
1420
+ return do_for_each_ref(get_main_ref_store(the_repository),
1421
git_replace_ref_base, fn,
1422
strlen(git_replace_ref_base),
1423
DO_FOR_EACH_INCLUDE_BROKEN, cb_data);
@@ -1427,7 +1428,7 @@ int for_each_namespaced_ref(each_ref_fn fn, void *cb_data)
1428
struct strbuf buf = STRBUF_INIT;
1429
int ret;
1430
strbuf_addf(&buf, "%srefs/", get_git_namespace());
1430
- ret = do_for_each_ref(get_main_ref_store(),
1431
+ ret = do_for_each_ref(get_main_ref_store(the_repository),
1432
buf.buf, fn, 0, 0, cb_data);
1433
strbuf_release(&buf);
1434
return ret;
@@ -1441,7 +1442,7 @@ int refs_for_each_rawref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
1442
1443
int for_each_rawref(each_ref_fn fn, void *cb_data)
1444
{
1444
- return refs_for_each_rawref(get_main_ref_store(), fn, cb_data);
1445
+ return refs_for_each_rawref(get_main_ref_store(the_repository), fn, cb_data);
1446
}
1447
1448
int refs_read_raw_ref(struct ref_store *ref_store,
@@ -1547,7 +1548,7 @@ const char *refs_resolve_ref_unsafe(struct ref_store *refs,
1548
/* backend functions */
1549
int refs_init_db(struct strbuf *err)
1550
{
1550
- struct ref_store *refs = get_main_ref_store();
1551
+ struct ref_store *refs = get_main_ref_store(the_repository);
1552
1553
return refs->be->init_db(refs, err);
1554
}
@@ -1555,7 +1556,7 @@ int refs_init_db(struct strbuf *err)
1556
const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
1557
struct object_id *oid, int *flags)
1558
{
1558
- return refs_resolve_ref_unsafe(get_main_ref_store(), refname,
1559
+ return refs_resolve_ref_unsafe(get_main_ref_store(the_repository), refname,
1560
resolve_flags, oid, flags);
1561
}
1562
@@ -1651,7 +1652,7 @@ static struct ref_store *ref_store_init(const char *gitdir,
1652
return refs;
1653
}
1654
1654
-struct ref_store *get_main_ref_store(void)
1655
+struct ref_store *get_main_ref_store_the_repository(void)
1656
{
1657
if (main_ref_store)
1658
return main_ref_store;
@@ -1726,7 +1727,7 @@ struct ref_store *get_worktree_ref_store(const struct worktree *wt)
1727
const char *id;
1728
1729
if (wt->is_current)
1729
- return get_main_ref_store();
1730
+ return get_main_ref_store(the_repository);
1731
1732
id = wt->id ? wt->id : "/";
1733
refs = lookup_ref_store_map(&worktree_ref_stores, id);
@@ -1782,7 +1783,7 @@ int refs_peel_ref(struct ref_store *refs, const char *refname,
1783
1784
int peel_ref(const char *refname, struct object_id *oid)
1785
{
1785
- return refs_peel_ref(get_main_ref_store(), refname, oid);
1786
+ return refs_peel_ref(get_main_ref_store(the_repository), refname, oid);
1787
}
1788
1789
int refs_create_symref(struct ref_store *refs,
@@ -1798,7 +1799,7 @@ int refs_create_symref(struct ref_store *refs,
1799
int create_symref(const char *ref_target, const char *refs_heads_master,
1800
const char *logmsg)
1801
{
1801
- return refs_create_symref(get_main_ref_store(), ref_target,
1802
+ return refs_create_symref(get_main_ref_store(the_repository), ref_target,
1803
refs_heads_master, logmsg);
1804
}
1805
@@ -2006,7 +2007,7 @@ int refs_for_each_reflog(struct ref_store *refs, each_ref_fn fn, void *cb_data)
2007
2008
int for_each_reflog(each_ref_fn fn, void *cb_data)
2009
{
2009
- return refs_for_each_reflog(get_main_ref_store(), fn, cb_data);
2010
+ return refs_for_each_reflog(get_main_ref_store(the_repository), fn, cb_data);
2011
}
2012
2013
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,
2022
int for_each_reflog_ent_reverse(const char *refname, each_reflog_ent_fn fn,
2023
void *cb_data)
2024
{
2024
- return refs_for_each_reflog_ent_reverse(get_main_ref_store(),
2025
+ return refs_for_each_reflog_ent_reverse(get_main_ref_store(the_repository),
2026
refname, fn, cb_data);
2027
}
2028
@@ -2034,7 +2035,7 @@ int refs_for_each_reflog_ent(struct ref_store *refs, const char *refname,
2035
int for_each_reflog_ent(const char *refname, each_reflog_ent_fn fn,
2036
void *cb_data)
2037
{
2037
- return refs_for_each_reflog_ent(get_main_ref_store(), refname,
2038
+ return refs_for_each_reflog_ent(get_main_ref_store(the_repository), refname,
2039
fn, cb_data);
2040
}
2041
@@ -2045,7 +2046,7 @@ int refs_reflog_exists(struct ref_store *refs, const char *refname)
2046
2047
int reflog_exists(const char *refname)
2048
{
2048
- return refs_reflog_exists(get_main_ref_store(), refname);
2049
+ return refs_reflog_exists(get_main_ref_store(the_repository), refname);
2050
}
2051
2052
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,
2058
int safe_create_reflog(const char *refname, int force_create,
2059
struct strbuf *err)
2060
{
2060
- return refs_create_reflog(get_main_ref_store(), refname,
2061
+ return refs_create_reflog(get_main_ref_store(the_repository), refname,
2062
force_create, err);
2063
}
2064
@@ -2068,7 +2069,7 @@ int refs_delete_reflog(struct ref_store *refs, const char *refname)
2069
2070
int delete_reflog(const char *refname)
2071
{
2071
- return refs_delete_reflog(get_main_ref_store(), refname);
2072
+ return refs_delete_reflog(get_main_ref_store(the_repository), refname);
2073
}
2074
2075
int refs_reflog_expire(struct ref_store *refs,
@@ -2091,7 +2092,7 @@ int reflog_expire(const char *refname, const struct object_id *oid,
2092
reflog_expiry_cleanup_fn cleanup_fn,
2093
void *policy_cb_data)
2094
{
2094
- return refs_reflog_expire(get_main_ref_store(),
2095
+ return refs_reflog_expire(get_main_ref_store(the_repository),
2096
refname, oid, flags,
2097
prepare_fn, should_prune_fn,
2098
cleanup_fn, policy_cb_data);
@@ -2114,7 +2115,7 @@ int refs_delete_refs(struct ref_store *refs, const char *msg,
2115
int delete_refs(const char *msg, struct string_list *refnames,
2116
unsigned int flags)
2117
{
2117
- return refs_delete_refs(get_main_ref_store(), msg, refnames, flags);
2118
+ return refs_delete_refs(get_main_ref_store(the_repository), msg, refnames, flags);
2119
}
2120
2121
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,
2126
2127
int rename_ref(const char *oldref, const char *newref, const char *logmsg)
2128
{
2128
- return refs_rename_ref(get_main_ref_store(), oldref, newref, logmsg);
2129
+ return refs_rename_ref(get_main_ref_store(the_repository), oldref, newref, logmsg);
2130
}
2131
2132
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,
2137
2138
int copy_existing_ref(const char *oldref, const char *newref, const char *logmsg)
2139
{
2139
- return refs_copy_existing_ref(get_main_ref_store(), oldref, newref, logmsg);
2140
+ return refs_copy_existing_ref(get_main_ref_store(the_repository), oldref, newref, logmsg);
2141
}
refs.h
+3
-1
@@ -758,7 +758,9 @@ int reflog_expire(const char *refname, const struct object_id *oid,
758
759
int ref_storage_backend_exists(const char *name);
760
761
-struct ref_store *get_main_ref_store(void);
761
+#define get_main_ref_store(r) \
762
+ get_main_ref_store_##r()
763
+struct ref_store *get_main_ref_store_the_repository(void);
764
/*
765
* Return the ref_store instance for the specified submodule. For the
766
* main repository, use submodule==NULL; such a call cannot fail. For
revision.c
+3
-2
@@ -6,6 +6,7 @@
6
#include "diff.h"
7
#include "refs.h"
8
#include "revision.h"
9
+#include "repository.h"
10
#include "graph.h"
11
#include "grep.h"
12
#include "reflog-walk.h"
@@ -1285,7 +1286,7 @@ void add_reflogs_to_pending(struct rev_info *revs, unsigned flags)
1286
1287
cb.all_revs = revs;
1288
cb.all_flags = flags;
1288
- cb.refs = get_main_ref_store();
1289
+ cb.refs = get_main_ref_store(the_repository);
1290
for_each_reflog(handle_one_reflog, &cb);
1291
1292
if (!revs->single_worktree)
@@ -2176,7 +2177,7 @@ static int handle_revision_pseudo_opt(const char *submodule,
2177
die("BUG: --single-worktree cannot be used together with submodule");
2178
refs = get_submodule_ref_store(submodule);
2179
} else
2179
- refs = get_main_ref_store();
2180
+ refs = get_main_ref_store(the_repository);
2181
2182
/*
2183
* NOTE!
t/helper/test-ref-store.c
+2
-1
@@ -3,6 +3,7 @@
3
#include "refs.h"
4
#include "worktree.h"
5
#include "object-store.h"
6
+#include "repository.h"
7
8
static const char *notnull(const char *arg, const char *name)
9
{
@@ -23,7 +24,7 @@ static const char **get_store(const char **argv, struct ref_store **refs)
24
if (!argv[0]) {
25
die("ref store required");
26
} else if (!strcmp(argv[0], "main")) {
26
- *refs = get_main_ref_store();
27
+ *refs = get_main_ref_store(the_repository);
28
} else if (skip_prefix(argv[0], "submodule:", &gitdir)) {
29
struct strbuf sb = STRBUF_INIT;
30
int ret;