@@ -1107,6 +1107,22 @@ static int write_midx_bitmap(char *midx_name, unsigned char *midx_hash,
1107
1107
return ret ;
1108
1108
}
1109
1109
1110
+ static struct multi_pack_index * lookup_multi_pack_index (struct repository * r ,
1111
+ const char * object_dir )
1112
+ {
1113
+ struct multi_pack_index * cur ;
1114
+
1115
+ /* Ensure the given object_dir is local, or a known alternate. */
1116
+ find_odb (r , object_dir );
1117
+
1118
+ for (cur = get_multi_pack_index (r ); cur ; cur = cur -> next ) {
1119
+ if (!strcmp (object_dir , cur -> object_dir ))
1120
+ return cur ;
1121
+ }
1122
+
1123
+ return NULL ;
1124
+ }
1125
+
1110
1126
static int write_midx_internal (const char * object_dir ,
1111
1127
struct string_list * packs_to_include ,
1112
1128
struct string_list * packs_to_drop ,
@@ -1120,15 +1136,11 @@ static int write_midx_internal(const char *object_dir,
1120
1136
struct hashfile * f = NULL ;
1121
1137
struct lock_file lk ;
1122
1138
struct write_midx_context ctx = { 0 };
1123
- struct multi_pack_index * cur ;
1124
1139
int pack_name_concat_len = 0 ;
1125
1140
int dropped_packs = 0 ;
1126
1141
int result = 0 ;
1127
1142
struct chunkfile * cf ;
1128
1143
1129
- /* Ensure the given object_dir is local, or a known alternate. */
1130
- find_odb (the_repository , object_dir );
1131
-
1132
1144
midx_name = get_midx_filename (object_dir );
1133
1145
if (safe_create_leading_directories (midx_name ))
1134
1146
die_errno (_ ("unable to create leading directories of %s" ),
@@ -1140,12 +1152,7 @@ static int write_midx_internal(const char *object_dir,
1140
1152
* packs to include, since all packs and objects are copied
1141
1153
* blindly from an existing MIDX if one is present.
1142
1154
*/
1143
- for (cur = get_multi_pack_index (the_repository ); cur ; cur = cur -> next ) {
1144
- if (!strcmp (object_dir , cur -> object_dir )) {
1145
- ctx .m = cur ;
1146
- break ;
1147
- }
1148
- }
1155
+ ctx .m = lookup_multi_pack_index (the_repository , object_dir );
1149
1156
}
1150
1157
1151
1158
if (ctx .m && !midx_checksum_valid (ctx .m )) {
@@ -1416,7 +1423,8 @@ static int write_midx_internal(const char *object_dir,
1416
1423
if (ctx .m )
1417
1424
close_object_store (the_repository -> objects );
1418
1425
1419
- commit_lock_file (& lk );
1426
+ if (commit_lock_file (& lk ) < 0 )
1427
+ die_errno (_ ("could not write multi-pack-index" ));
1420
1428
1421
1429
clear_midx_files_ext (object_dir , ".bitmap" , midx_hash );
1422
1430
clear_midx_files_ext (object_dir , ".rev" , midx_hash );
@@ -1689,7 +1697,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
1689
1697
{
1690
1698
uint32_t i , * count , result = 0 ;
1691
1699
struct string_list packs_to_drop = STRING_LIST_INIT_DUP ;
1692
- struct multi_pack_index * m = load_multi_pack_index ( object_dir , 1 );
1700
+ struct multi_pack_index * m = lookup_multi_pack_index ( r , object_dir );
1693
1701
struct progress * progress = NULL ;
1694
1702
1695
1703
if (!m )
@@ -1734,12 +1742,11 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
1734
1742
1735
1743
free (count );
1736
1744
1737
- if (packs_to_drop .nr ) {
1745
+ if (packs_to_drop .nr )
1738
1746
result = write_midx_internal (object_dir , NULL , & packs_to_drop , NULL , NULL , flags );
1739
- m = NULL ;
1740
- }
1741
1747
1742
1748
string_list_clear (& packs_to_drop , 0 );
1749
+
1743
1750
return result ;
1744
1751
}
1745
1752
@@ -1855,7 +1862,7 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size,
1855
1862
struct child_process cmd = CHILD_PROCESS_INIT ;
1856
1863
FILE * cmd_in ;
1857
1864
struct strbuf base_name = STRBUF_INIT ;
1858
- struct multi_pack_index * m = load_multi_pack_index ( object_dir , 1 );
1865
+ struct multi_pack_index * m = lookup_multi_pack_index ( r , object_dir );
1859
1866
1860
1867
/*
1861
1868
* When updating the default for these configuration
@@ -1927,11 +1934,8 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size,
1927
1934
}
1928
1935
1929
1936
result = write_midx_internal (object_dir , NULL , NULL , NULL , NULL , flags );
1930
- m = NULL ;
1931
1937
1932
1938
cleanup :
1933
- if (m )
1934
- close_midx (m );
1935
1939
free (include_pack );
1936
1940
return result ;
1937
1941
}
0 commit comments