@@ -114,6 +114,7 @@ struct upload_pack_data {
114
114
unsigned allow_ref_in_want : 1 ; /* v2 only */
115
115
unsigned allow_sideband_all : 1 ; /* v2 only */
116
116
unsigned seen_haves : 1 ; /* v2 only */
117
+ unsigned allow_packfile_uris : 1 ; /* v2 only */
117
118
unsigned advertise_sid : 1 ;
118
119
unsigned sent_capabilities : 1 ;
119
120
};
@@ -1363,6 +1364,9 @@ static int upload_pack_config(const char *var, const char *value,
1363
1364
data -> allow_ref_in_want = git_config_bool (var , value );
1364
1365
} else if (!strcmp ("uploadpack.allowsidebandall" , var )) {
1365
1366
data -> allow_sideband_all = git_config_bool (var , value );
1367
+ } else if (!strcmp ("uploadpack.blobpackfileuri" , var )) {
1368
+ if (value )
1369
+ data -> allow_packfile_uris = 1 ;
1366
1370
} else if (!strcmp ("core.precomposeunicode" , var )) {
1367
1371
precomposed_unicode = git_config_bool (var , value );
1368
1372
} else if (!strcmp ("transfer.advertisesid" , var )) {
@@ -1386,10 +1390,13 @@ static int upload_pack_protected_config(const char *var, const char *value,
1386
1390
return 0 ;
1387
1391
}
1388
1392
1389
- static void get_upload_pack_config (struct upload_pack_data * data )
1393
+ static void get_upload_pack_config (struct repository * r ,
1394
+ struct upload_pack_data * data )
1390
1395
{
1391
- git_config ( upload_pack_config , data );
1396
+ repo_config ( r , upload_pack_config , data );
1392
1397
git_protected_config (upload_pack_protected_config , data );
1398
+
1399
+ data -> allow_sideband_all |= git_env_bool ("GIT_TEST_SIDEBAND_ALL" , 0 );
1393
1400
}
1394
1401
1395
1402
void upload_pack (const int advertise_refs , const int stateless_rpc ,
@@ -1399,7 +1406,7 @@ void upload_pack(const int advertise_refs, const int stateless_rpc,
1399
1406
struct upload_pack_data data ;
1400
1407
1401
1408
upload_pack_data_init (& data );
1402
- get_upload_pack_config (& data );
1409
+ get_upload_pack_config (the_repository , & data );
1403
1410
1404
1411
data .stateless_rpc = stateless_rpc ;
1405
1412
data .timeout = timeout ;
@@ -1641,14 +1648,14 @@ static void process_args(struct packet_reader *request,
1641
1648
continue ;
1642
1649
}
1643
1650
1644
- if ((git_env_bool ("GIT_TEST_SIDEBAND_ALL" , 0 ) ||
1645
- data -> allow_sideband_all ) &&
1651
+ if (data -> allow_sideband_all &&
1646
1652
!strcmp (arg , "sideband-all" )) {
1647
1653
data -> writer .use_sideband = 1 ;
1648
1654
continue ;
1649
1655
}
1650
1656
1651
- if (skip_prefix (arg , "packfile-uris " , & p )) {
1657
+ if (data -> allow_packfile_uris &&
1658
+ skip_prefix (arg , "packfile-uris " , & p )) {
1652
1659
if (data -> uri_protocols .nr )
1653
1660
send_err_and_die (data ,
1654
1661
"multiple packfile-uris lines forbidden" );
@@ -1754,7 +1761,7 @@ enum fetch_state {
1754
1761
FETCH_DONE ,
1755
1762
};
1756
1763
1757
- int upload_pack_v2 (struct repository * r UNUSED , struct packet_reader * request )
1764
+ int upload_pack_v2 (struct repository * r , struct packet_reader * request )
1758
1765
{
1759
1766
enum fetch_state state = FETCH_PROCESS_ARGS ;
1760
1767
struct upload_pack_data data ;
@@ -1763,7 +1770,7 @@ int upload_pack_v2(struct repository *r UNUSED, struct packet_reader *request)
1763
1770
1764
1771
upload_pack_data_init (& data );
1765
1772
data .use_sideband = LARGE_PACKET_MAX ;
1766
- get_upload_pack_config (& data );
1773
+ get_upload_pack_config (r , & data );
1767
1774
1768
1775
while (state != FETCH_DONE ) {
1769
1776
switch (state ) {
@@ -1822,41 +1829,28 @@ int upload_pack_v2(struct repository *r UNUSED, struct packet_reader *request)
1822
1829
int upload_pack_advertise (struct repository * r ,
1823
1830
struct strbuf * value )
1824
1831
{
1825
- if (value ) {
1826
- int allow_filter_value ;
1827
- int allow_ref_in_want ;
1828
- int allow_sideband_all_value ;
1829
- char * str = NULL ;
1832
+ struct upload_pack_data data ;
1833
+
1834
+ upload_pack_data_init (& data );
1835
+ get_upload_pack_config (r , & data );
1830
1836
1837
+ if (value ) {
1831
1838
strbuf_addstr (value , "shallow wait-for-done" );
1832
1839
1833
- if (!repo_config_get_bool (r ,
1834
- "uploadpack.allowfilter" ,
1835
- & allow_filter_value ) &&
1836
- allow_filter_value )
1840
+ if (data .allow_filter )
1837
1841
strbuf_addstr (value , " filter" );
1838
1842
1839
- if (!repo_config_get_bool (r ,
1840
- "uploadpack.allowrefinwant" ,
1841
- & allow_ref_in_want ) &&
1842
- allow_ref_in_want )
1843
+ if (data .allow_ref_in_want )
1843
1844
strbuf_addstr (value , " ref-in-want" );
1844
1845
1845
- if (git_env_bool ("GIT_TEST_SIDEBAND_ALL" , 0 ) ||
1846
- (!repo_config_get_bool (r ,
1847
- "uploadpack.allowsidebandall" ,
1848
- & allow_sideband_all_value ) &&
1849
- allow_sideband_all_value ))
1846
+ if (data .allow_sideband_all )
1850
1847
strbuf_addstr (value , " sideband-all" );
1851
1848
1852
- if (!repo_config_get_string (r ,
1853
- "uploadpack.blobpackfileuri" ,
1854
- & str ) &&
1855
- str ) {
1849
+ if (data .allow_packfile_uris )
1856
1850
strbuf_addstr (value , " packfile-uris" );
1857
- free (str );
1858
- }
1859
1851
}
1860
1852
1853
+ upload_pack_data_clear (& data );
1854
+
1861
1855
return 1 ;
1862
1856
}
0 commit comments