server-info: stop using `the_repository`
Stop using `the_repository` in the "server-info" subsystem by passing in a repository when updating server info and storing the repository in the `update_info_ctx` structure to make it accessible to other functions. Adjust callers accordingly by using `the_repository`. While there may be some callers that have a repository available in their context, this trivial conversion allows for easier verification and bubbles up the use of `the_repository` by one level. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committed
Dec 17, 2024 at 07:43 UTC
c365dbb44ec81fc60e9b7666a4384f8649d80b2a
5 files changed
+28
-22
builtin/receive-pack.c
+1
-1
@@ -2628,7 +2628,7 @@ int cmd_receive_pack(int argc,
2628
}
2629
}
2630
if (auto_update_server_info)
2631
- update_server_info(0);
2631
+ update_server_info(the_repository, 0);
2632
clear_shallow_info(&si);
2633
}
2634
if (use_sideband)
builtin/repack.c
+1
-1
@@ -1565,7 +1565,7 @@ int cmd_repack(int argc,
1565
}
1566
1567
if (run_update_server_info)
1568
- update_server_info(0);
1568
+ update_server_info(the_repository, 0);
1569
1570
if (git_env_bool(GIT_TEST_MULTI_PACK_INDEX, 0)) {
1571
unsigned flags = 0;
builtin/update-server-info.c
+1
-1
@@ -27,5 +27,5 @@ int cmd_update_server_info(int argc,
27
if (argc > 0)
28
usage_with_options(update_server_info_usage, options);
29
30
- return !!update_server_info(force);
30
+ return !!update_server_info(the_repository, force);
31
}
server-info.c
+22
-18
@@ -1,4 +1,3 @@
1
-#define USE_THE_REPOSITORY_VARIABLE
1
#define DISABLE_SIGN_COMPARE_WARNINGS
2
3
#include "git-compat-util.h"
@@ -18,6 +17,7 @@
17
#include "tempfile.h"
18
19
struct update_info_ctx {
20
+ struct repository *repo;
21
FILE *cur_fp;
22
FILE *old_fp; /* becomes NULL if it differs from cur_fp */
23
struct strbuf cur_sb;
@@ -73,7 +73,7 @@ static int uic_printf(struct update_info_ctx *uic, const char *fmt, ...)
73
* it into place. The contents of the file come from "generate", which
74
* should return non-zero if it encounters an error.
75
*/
76
-static int update_info_file(char *path,
76
+static int update_info_file(struct repository *r, char *path,
77
int (*generate)(struct update_info_ctx *),
78
int force)
79
{
@@ -81,6 +81,7 @@ static int update_info_file(char *path,
81
struct tempfile *f = NULL;
82
int ret = -1;
83
struct update_info_ctx uic = {
84
+ .repo = r,
85
.cur_fp = NULL,
86
.old_fp = NULL,
87
.cur_sb = STRBUF_INIT,
@@ -152,7 +153,7 @@ static int add_info_ref(const char *path, const char *referent UNUSED, const str
153
void *cb_data)
154
{
155
struct update_info_ctx *uic = cb_data;
155
- struct object *o = parse_object(the_repository, oid);
156
+ struct object *o = parse_object(uic->repo, oid);
157
if (!o)
158
return -1;
159
@@ -160,7 +161,7 @@ static int add_info_ref(const char *path, const char *referent UNUSED, const str
161
return -1;
162
163
if (o->type == OBJ_TAG) {
163
- o = deref_tag(the_repository, o, path, 0);
164
+ o = deref_tag(uic->repo, o, path, 0);
165
if (o)
166
if (uic_printf(uic, "%s %s^{}\n",
167
oid_to_hex(&o->oid), path) < 0)
@@ -171,14 +172,14 @@ static int add_info_ref(const char *path, const char *referent UNUSED, const str
172
173
static int generate_info_refs(struct update_info_ctx *uic)
174
{
174
- return refs_for_each_ref(get_main_ref_store(the_repository),
175
+ return refs_for_each_ref(get_main_ref_store(uic->repo),
176
add_info_ref, uic);
177
}
178
178
-static int update_info_refs(int force)
179
+static int update_info_refs(struct repository *r, int force)
180
{
180
- char *path = git_pathdup("info/refs");
181
- int ret = update_info_file(path, generate_info_refs, force);
181
+ char *path = repo_git_path(r, "info/refs");
182
+ int ret = update_info_file(r, path, generate_info_refs, force);
183
free(path);
184
return ret;
185
}
@@ -284,14 +285,14 @@ static int compare_info(const void *a_, const void *b_)
285
return 1;
286
}
287
287
-static void init_pack_info(const char *infofile, int force)
288
+static void init_pack_info(struct repository *r, const char *infofile, int force)
289
{
290
struct packed_git *p;
291
int stale;
292
int i;
293
size_t alloc = 0;
294
294
- for (p = get_all_packs(the_repository); p; p = p->next) {
295
+ for (p = get_all_packs(r); p; p = p->next) {
296
/* we ignore things on alternate path since they are
297
* not available to the pullers in general.
298
*/
@@ -340,33 +341,36 @@ static int write_pack_info_file(struct update_info_ctx *uic)
341
return 0;
342
}
343
343
-static int update_info_packs(int force)
344
+static int update_info_packs(struct repository *r, int force)
345
{
346
char *infofile = mkpathdup("%s/info/packs",
346
- repo_get_object_directory(the_repository));
347
+ repo_get_object_directory(r));
348
int ret;
349
349
- init_pack_info(infofile, force);
350
- ret = update_info_file(infofile, write_pack_info_file, force);
350
+ init_pack_info(r, infofile, force);
351
+ ret = update_info_file(r, infofile, write_pack_info_file, force);
352
free_pack_info();
353
free(infofile);
354
return ret;
355
}
356
357
/* public */
357
-int update_server_info(int force)
358
+int update_server_info(struct repository *r, int force)
359
{
360
/* We would add more dumb-server support files later,
361
* including index of available pack files and their
362
* intended audiences.
363
*/
364
int errs = 0;
365
+ char *path;
366
365
- errs = errs | update_info_refs(force);
366
- errs = errs | update_info_packs(force);
367
+ errs = errs | update_info_refs(r, force);
368
+ errs = errs | update_info_packs(r, force);
369
370
/* remove leftover rev-cache file if there is any */
369
- unlink_or_warn(git_path("info/rev-cache"));
371
+ path = repo_git_path(r, "info/rev-cache");
372
+ unlink_or_warn(path);
373
+ free(path);
374
375
return errs;
376
}
server-info.h
+3
-1
@@ -1,7 +1,9 @@
1
#ifndef SERVER_INFO_H
2
#define SERVER_INFO_H
3
4
+struct repository;
5
+
6
/* Dumb servers support */
5
-int update_server_info(int);
7
+int update_server_info(struct repository *r, int force);
8
9
#endif /* SERVER_INFO_H */