Author: kotkov Date: Mon Nov 28 12:41:57 2022 New Revision: 1905568 URL: http://svn.apache.org/viewvc?rev=1905568&view=rev Log: On the 'pristines-on-demand-on-mwf' branch: Following up on r1905324, fix an issue where we inadvertently started to use unmodified working files as text-bases even in working copies created with --store-pristine=yes.
This was causing basic_tests.py#9 to fail. * subversion/libsvn_wc/textbase.c (open_textbase): Only use an unmodified working file as the text-base if the working copy is not configured to store local pristines. Modified: subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c Modified: subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c URL: http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c?rev=1905568&r1=1905567&r2=1905568&view=diff ============================================================================== --- subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c (original) +++ subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c Mon Nov 28 12:41:57 2022 @@ -271,21 +271,33 @@ open_textbase(svn_stream_t **contents_p, if (checksum && svn_checksum_match(checksum, target_checksum)) { - svn_boolean_t modified; + svn_boolean_t store_pristine; - SVN_ERR(check_file_modified(&modified, db, local_abspath, recorded_size, - recorded_time, target_checksum, have_props, - props_mod, scratch_pool)); - if (!modified) + SVN_ERR(svn_wc__db_get_settings(NULL, &store_pristine, db, local_abspath, + scratch_pool)); + if (!store_pristine) { - SVN_ERR(svn_wc__internal_translated_stream(contents_p, db, - local_abspath, - local_abspath, - SVN_WC_TRANSLATE_TO_NF, - result_pool, - scratch_pool)); + svn_boolean_t modified; - return SVN_NO_ERROR; + /* If the working copy doesn't store local copies of all pristine + * contents, a text-base of the unmodified file is the file itself, + * appropriately detranslated. */ + + SVN_ERR(check_file_modified(&modified, db, local_abspath, + recorded_size, recorded_time, + target_checksum, have_props, + props_mod, scratch_pool)); + if (!modified) + { + SVN_ERR(svn_wc__internal_translated_stream(contents_p, db, + local_abspath, + local_abspath, + SVN_WC_TRANSLATE_TO_NF, + result_pool, + scratch_pool)); + + return SVN_NO_ERROR; + } } }