1- #define USE_THE_REPOSITORY_VARIABLE
21#define DISABLE_SIGN_COMPARE_WARNINGS
32
43#include "git-compat-util.h"
1817#include "tempfile.h"
1918
2019struct update_info_ctx {
20+ struct repository * repo ;
2121 FILE * cur_fp ;
2222 FILE * old_fp ; /* becomes NULL if it differs from cur_fp */
2323 struct strbuf cur_sb ;
@@ -73,14 +73,15 @@ static int uic_printf(struct update_info_ctx *uic, const char *fmt, ...)
7373 * it into place. The contents of the file come from "generate", which
7474 * should return non-zero if it encounters an error.
7575 */
76- static int update_info_file (char * path ,
76+ static int update_info_file (struct repository * r , char * path ,
7777 int (* generate )(struct update_info_ctx * ),
7878 int force )
7979{
8080 char * tmp = mkpathdup ("%s_XXXXXX" , path );
8181 struct tempfile * f = NULL ;
8282 int ret = -1 ;
8383 struct update_info_ctx uic = {
84+ .repo = r ,
8485 .cur_fp = NULL ,
8586 .old_fp = NULL ,
8687 .cur_sb = STRBUF_INIT ,
@@ -152,15 +153,15 @@ static int add_info_ref(const char *path, const char *referent UNUSED, const str
152153 void * cb_data )
153154{
154155 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 );
156157 if (!o )
157158 return -1 ;
158159
159160 if (uic_printf (uic , "%s %s\n" , oid_to_hex (oid ), path ) < 0 )
160161 return -1 ;
161162
162163 if (o -> type == OBJ_TAG ) {
163- o = deref_tag (the_repository , o , path , 0 );
164+ o = deref_tag (uic -> repo , o , path , 0 );
164165 if (o )
165166 if (uic_printf (uic , "%s %s^{}\n" ,
166167 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
171172
172173static int generate_info_refs (struct update_info_ctx * uic )
173174{
174- return refs_for_each_ref (get_main_ref_store (the_repository ),
175+ return refs_for_each_ref (get_main_ref_store (uic -> repo ),
175176 add_info_ref , uic );
176177}
177178
178- static int update_info_refs (int force )
179+ static int update_info_refs (struct repository * r , int force )
179180{
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 );
182183 free (path );
183184 return ret ;
184185}
@@ -284,14 +285,14 @@ static int compare_info(const void *a_, const void *b_)
284285 return 1 ;
285286}
286287
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 )
288289{
289290 struct packed_git * p ;
290291 int stale ;
291292 int i ;
292293 size_t alloc = 0 ;
293294
294- for (p = get_all_packs (the_repository ); p ; p = p -> next ) {
295+ for (p = get_all_packs (r ); p ; p = p -> next ) {
295296 /* we ignore things on alternate path since they are
296297 * not available to the pullers in general.
297298 */
@@ -340,33 +341,36 @@ static int write_pack_info_file(struct update_info_ctx *uic)
340341 return 0 ;
341342}
342343
343- static int update_info_packs (int force )
344+ static int update_info_packs (struct repository * r , int force )
344345{
345346 char * infofile = mkpathdup ("%s/info/packs" ,
346- repo_get_object_directory (the_repository ));
347+ repo_get_object_directory (r ));
347348 int ret ;
348349
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 );
351352 free_pack_info ();
352353 free (infofile );
353354 return ret ;
354355}
355356
356357/* public */
357- int update_server_info (int force )
358+ int update_server_info (struct repository * r , int force )
358359{
359360 /* We would add more dumb-server support files later,
360361 * including index of available pack files and their
361362 * intended audiences.
362363 */
363364 int errs = 0 ;
365+ char * path ;
364366
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 );
367369
368370 /* 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 );
370374
371375 return errs ;
372376}
0 commit comments