1
- #define USE_THE_REPOSITORY_VARIABLE
2
1
#define DISABLE_SIGN_COMPARE_WARNINGS
3
2
4
3
#include "git-compat-util.h"
18
17
#include "tempfile.h"
19
18
20
19
struct update_info_ctx {
20
+ struct repository * repo ;
21
21
FILE * cur_fp ;
22
22
FILE * old_fp ; /* becomes NULL if it differs from cur_fp */
23
23
struct strbuf cur_sb ;
@@ -73,14 +73,15 @@ static int uic_printf(struct update_info_ctx *uic, const char *fmt, ...)
73
73
* it into place. The contents of the file come from "generate", which
74
74
* should return non-zero if it encounters an error.
75
75
*/
76
- static int update_info_file (char * path ,
76
+ static int update_info_file (struct repository * r , char * path ,
77
77
int (* generate )(struct update_info_ctx * ),
78
78
int force )
79
79
{
80
80
char * tmp = mkpathdup ("%s_XXXXXX" , path );
81
81
struct tempfile * f = NULL ;
82
82
int ret = -1 ;
83
83
struct update_info_ctx uic = {
84
+ .repo = r ,
84
85
.cur_fp = NULL ,
85
86
.old_fp = NULL ,
86
87
.cur_sb = STRBUF_INIT ,
@@ -152,15 +153,15 @@ static int add_info_ref(const char *path, const char *referent UNUSED, const str
152
153
void * cb_data )
153
154
{
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 );
156
157
if (!o )
157
158
return -1 ;
158
159
159
160
if (uic_printf (uic , "%s %s\n" , oid_to_hex (oid ), path ) < 0 )
160
161
return -1 ;
161
162
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 );
164
165
if (o )
165
166
if (uic_printf (uic , "%s %s^{}\n" ,
166
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
171
172
172
173
static int generate_info_refs (struct update_info_ctx * uic )
173
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 ),
175
176
add_info_ref , uic );
176
177
}
177
178
178
- static int update_info_refs (int force )
179
+ static int update_info_refs (struct repository * r , int force )
179
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 );
182
183
free (path );
183
184
return ret ;
184
185
}
@@ -284,14 +285,14 @@ static int compare_info(const void *a_, const void *b_)
284
285
return 1 ;
285
286
}
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 )
288
289
{
289
290
struct packed_git * p ;
290
291
int stale ;
291
292
int i ;
292
293
size_t alloc = 0 ;
293
294
294
- for (p = get_all_packs (the_repository ); p ; p = p -> next ) {
295
+ for (p = get_all_packs (r ); p ; p = p -> next ) {
295
296
/* we ignore things on alternate path since they are
296
297
* not available to the pullers in general.
297
298
*/
@@ -340,33 +341,36 @@ static int write_pack_info_file(struct update_info_ctx *uic)
340
341
return 0 ;
341
342
}
342
343
343
- static int update_info_packs (int force )
344
+ static int update_info_packs (struct repository * r , int force )
344
345
{
345
346
char * infofile = mkpathdup ("%s/info/packs" ,
346
- repo_get_object_directory (the_repository ));
347
+ repo_get_object_directory (r ));
347
348
int ret ;
348
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 );
351
352
free_pack_info ();
352
353
free (infofile );
353
354
return ret ;
354
355
}
355
356
356
357
/* public */
357
- int update_server_info (int force )
358
+ int update_server_info (struct repository * r , int force )
358
359
{
359
360
/* We would add more dumb-server support files later,
360
361
* including index of available pack files and their
361
362
* intended audiences.
362
363
*/
363
364
int errs = 0 ;
365
+ char * path ;
364
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 );
367
369
368
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 );
370
374
371
375
return errs ;
372
376
}
0 commit comments