Hi, See attached my patch for fixing issue #4395. http://subversion.tigris.org/issues/show_bug.cgi?id=4395
[[[ Fix issue 4395 by not deleting the format and entries file when we upgrade from an 1.7 working copy. * subversion/libsvn_wc/upgrade.c (wipe_obsolete_files): Add a boolean parameter remove_format_entries declaring whether we should wipe format and entry files. (svn_wc__wipe_postupgrade): Pass TRUE for remove_format_entries to keep the old behavior for pre-1.7 working copies. (svn_wc__upgrade_sdb): Pass FALSE for remove_format_entries to keep the files when upgrading from an 1.7 (or newer) working copy. ]]] All tests still pass after applying that change, but it seems the change itself is not covered by any tests. Should I add a test case for it? If yes, how to get/create 1.6 and 1.7 working copies within the test suite? Best regards Markus Schaber CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH Inspiring Automation Solutions 3S-Smart Software Solutions GmbH Dipl.-Inf. Markus Schaber | Product Development Core Technology Memminger Str. 151 | 87439 Kempten | Germany Tel. +49-831-54031-979 | Fax +49-831-54031-50 E-Mail: m.scha...@codesys.com | Web: http://www.codesys.com | CODESYS store: http://store.codesys.com CODESYS forum: http://forum.codesys.com Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915
Index: subversion/libsvn_wc/upgrade.c =================================================================== --- subversion/libsvn_wc/upgrade.c (revision 1603773) +++ subversion/libsvn_wc/upgrade.c (working copy) @@ -430,21 +430,24 @@ /* Wipe out all the obsolete files/dirs from the administrative area. */ static void -wipe_obsolete_files(const char *wcroot_abspath, apr_pool_t *scratch_pool) +wipe_obsolete_files(const char *wcroot_abspath, svn_boolean_t remove_format_entries, apr_pool_t *scratch_pool) { /* Zap unused files. */ + if (remove_format_entries) + { + svn_error_clear(svn_io_remove_file2( + svn_wc__adm_child(wcroot_abspath, + SVN_WC__ADM_FORMAT, + scratch_pool), + TRUE, scratch_pool)); + svn_error_clear(svn_io_remove_file2( + svn_wc__adm_child(wcroot_abspath, + SVN_WC__ADM_ENTRIES, + scratch_pool), + TRUE, scratch_pool)); + } svn_error_clear(svn_io_remove_file2( svn_wc__adm_child(wcroot_abspath, - SVN_WC__ADM_FORMAT, - scratch_pool), - TRUE, scratch_pool)); - svn_error_clear(svn_io_remove_file2( - svn_wc__adm_child(wcroot_abspath, - SVN_WC__ADM_ENTRIES, - scratch_pool), - TRUE, scratch_pool)); - svn_error_clear(svn_io_remove_file2( - svn_wc__adm_child(wcroot_abspath, ADM_EMPTY_FILE, scratch_pool), TRUE, scratch_pool)); @@ -564,7 +567,7 @@ iterpool), TRUE, NULL, NULL, iterpool)); else - wipe_obsolete_files(dir_abspath, scratch_pool); + wipe_obsolete_files(dir_abspath, TRUE, scratch_pool); if (delete_dir) { @@ -1977,7 +1980,7 @@ #endif /* Zap anything that might be remaining or escaped our notice. */ - wipe_obsolete_files(wcroot_abspath, scratch_pool); + wipe_obsolete_files(wcroot_abspath, FALSE, scratch_pool); return SVN_NO_ERROR; }