@@ -77,8 +77,7 @@ typedef struct git_config_file_iter {
7777 (iter) = (tmp))
7878
7979struct reader {
80- time_t file_mtime ;
81- size_t file_size ;
80+ git_oid checksum ;
8281 char * file_path ;
8382 git_buf buffer ;
8483 char * read_ptr ;
@@ -285,7 +284,7 @@ static int config_open(git_config_backend *cfg, git_config_level_t level)
285284
286285 git_buf_init (& reader -> buffer , 0 );
287286 res = git_futils_readbuffer_updated (
288- & reader -> buffer , b -> file_path , & reader -> file_mtime , & reader -> file_size , NULL );
287+ & reader -> buffer , b -> file_path , & reader -> checksum , NULL );
289288
290289 /* It's fine if the file doesn't exist */
291290 if (res == GIT_ENOTFOUND )
@@ -345,7 +344,7 @@ static int config_refresh(git_config_backend *cfg)
345344 reader = git_array_get (b -> readers , i );
346345 error = git_futils_readbuffer_updated (
347346 & reader -> buffer , reader -> file_path ,
348- & reader -> file_mtime , & reader -> file_size , & updated );
347+ & reader -> checksum , & updated );
349348
350349 if (error < 0 && error != GIT_ENOTFOUND )
351350 return error ;
@@ -1618,7 +1617,7 @@ static int read_on_variable(
16181617 git_buf_init (& r -> buffer , 0 );
16191618
16201619 result = git_futils_readbuffer_updated (
1621- & r -> buffer , r -> file_path , & r -> file_mtime , & r -> file_size , NULL );
1620+ & r -> buffer , r -> file_path , & r -> checksum , NULL );
16221621
16231622 if (result == 0 ) {
16241623 result = config_read (parse_data -> values , parse_data -> cfg_file , r , parse_data -> level , parse_data -> depth + 1 );
@@ -1894,7 +1893,7 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p
18941893 } else {
18951894 /* Lock the file */
18961895 if ((result = git_filebuf_open (
1897- & file , cfg -> file_path , 0 , GIT_CONFIG_FILE_MODE )) < 0 ) {
1896+ & file , cfg -> file_path , GIT_FILEBUF_HASH_CONTENTS , GIT_CONFIG_FILE_MODE )) < 0 ) {
18981897 git_buf_free (& reader -> buffer );
18991898 return result ;
19001899 }
@@ -1945,10 +1944,6 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p
19451944 git_buf_attach (& cfg -> locked_content , git_buf_detach (& buf ), len );
19461945 } else {
19471946 git_filebuf_write (& file , git_buf_cstr (& buf ), git_buf_len (& buf ));
1948-
1949- /* refresh stats - if this errors, then commit will error too */
1950- (void )git_filebuf_stats (& reader -> file_mtime , & reader -> file_size , & file );
1951-
19521947 result = git_filebuf_commit (& file );
19531948 }
19541949
0 commit comments