@@ -1238,7 +1238,7 @@ static void parse_pack_objects(unsigned char *hash)
12381238 * recursively checking if the resulting object is used as a base
12391239 * for some more deltas.
12401240 */
1241- static void resolve_deltas (void )
1241+ static void resolve_deltas (struct pack_idx_option * opts )
12421242{
12431243 int i ;
12441244
@@ -1254,7 +1254,7 @@ static void resolve_deltas(void)
12541254 nr_ref_deltas + nr_ofs_deltas );
12551255
12561256 nr_dispatched = 0 ;
1257- base_cache_limit = delta_base_cache_limit * nr_threads ;
1257+ base_cache_limit = opts -> delta_base_cache_limit * nr_threads ;
12581258 if (nr_threads > 1 || getenv ("GIT_FORCE_THREADS" )) {
12591259 init_thread ();
12601260 work_lock ();
@@ -1479,7 +1479,7 @@ static void write_special_file(const char *suffix, const char *msg,
14791479 if (pack_name )
14801480 filename = derive_filename (pack_name , "pack" , suffix , & name_buf );
14811481 else
1482- filename = odb_pack_name (& name_buf , hash , suffix );
1482+ filename = odb_pack_name (the_repository , & name_buf , hash , suffix );
14831483
14841484 fd = odb_pack_keep (filename );
14851485 if (fd < 0 ) {
@@ -1507,7 +1507,7 @@ static void rename_tmp_packfile(const char **final_name,
15071507{
15081508 if (!* final_name || strcmp (* final_name , curr_name )) {
15091509 if (!* final_name )
1510- * final_name = odb_pack_name (name , hash , ext );
1510+ * final_name = odb_pack_name (the_repository , name , hash , ext );
15111511 if (finalize_object_file (curr_name , * final_name ))
15121512 die (_ ("unable to rename temporary '*.%s' file to '%s'" ),
15131513 ext , * final_name );
@@ -1552,7 +1552,8 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
15521552
15531553 if (do_fsck_object ) {
15541554 struct packed_git * p ;
1555- p = add_packed_git (final_index_name , strlen (final_index_name ), 0 );
1555+ p = add_packed_git (the_repository , final_index_name ,
1556+ strlen (final_index_name ), 0 );
15561557 if (p )
15571558 install_packed_git (the_repository , p );
15581559 }
@@ -1603,6 +1604,10 @@ static int git_index_pack_config(const char *k, const char *v,
16031604 else
16041605 opts -> flags &= ~WRITE_REV ;
16051606 }
1607+ if (!strcmp (k , "core.deltabasecachelimit" )) {
1608+ opts -> delta_base_cache_limit = git_config_ulong (k , v , ctx -> kvi );
1609+ return 0 ;
1610+ }
16061611 return git_default_config (k , v , ctx , cb );
16071612}
16081613
@@ -1650,7 +1655,8 @@ static void read_v2_anomalous_offsets(struct packed_git *p,
16501655
16511656static void read_idx_option (struct pack_idx_option * opts , const char * pack_name )
16521657{
1653- struct packed_git * p = add_packed_git (pack_name , strlen (pack_name ), 1 );
1658+ struct packed_git * p = add_packed_git (the_repository , pack_name ,
1659+ strlen (pack_name ), 1 );
16541660
16551661 if (!p )
16561662 die (_ ("Cannot open existing pack file '%s'" ), pack_name );
@@ -1928,7 +1934,7 @@ int cmd_index_pack(int argc,
19281934 parse_pack_objects (pack_hash );
19291935 if (report_end_of_input )
19301936 write_in_full (2 , "\0" , 1 );
1931- resolve_deltas ();
1937+ resolve_deltas (& opts );
19321938 conclude_pack (fix_thin_pack , curr_pack , pack_hash );
19331939 free (ofs_deltas );
19341940 free (ref_deltas );
0 commit comments