Index: subversion/libsvn_wc/adm_ops.c =================================================================== --- subversion/libsvn_wc/adm_ops.c (revision 17146) +++ subversion/libsvn_wc/adm_ops.c (working copy) @@ -927,7 +927,17 @@ adm_access, prop_revert, prop_base, TRUE, pool)); } + if (was_schedule == svn_wc_schedule_add) + { + /* remove the properties file */ + const char *svn_thang; + /* Working prop file. */ + SVN_ERR (svn_wc__prop_path (&svn_thang, path, adm_access, FALSE, + pool)); + SVN_ERR (remove_file_if_present (svn_thang, pool)); + } + SVN_ERR (svn_wc__write_log (adm_access, 0, log_accum, pool)); SVN_ERR (svn_wc__run_log (adm_access, NULL, pool)); Index: subversion/tests/clients/cmdline/prop_tests.py =================================================================== --- subversion/tests/clients/cmdline/prop_tests.py (revision 17146) +++ subversion/tests/clients/cmdline/prop_tests.py (working copy) @@ -1104,7 +1104,30 @@ verify_output([ prop1 + ' : ' + propval1, prop2 + ' : ' + propval2, 'Properties on ' ], output, errput) +#---------------------------------------------------------------------- +def removal_schedule_added_props(sbox): + "removal of schedule added file with properties" + + sbox.build() + + wc_dir = sbox.wc_dir + newfile_path = os.path.join(wc_dir, 'newfile') + # create new fs file + touch_command = "touch " + newfile_path + os.system(touch_command) + svntest.main.run_svn(None, 'add', newfile_path) + svntest.main.run_svn(None, 'propset', 'newprop', 'newvalue', newfile_path) + svntest.main.run_svn(None, 'rm', '--force', newfile_path) + # recreate the file and add it again + os.system(touch_command) + svntest.main.run_svn(None, 'add', newfile_path) + + # check the properties + svntest.actions.run_and_verify_svn(None, [], [], + 'proplist', '-v', newfile_path) + + ######################################################################## # Run the tests @@ -1129,6 +1152,7 @@ binary_props, recursive_base_wc_ops, url_props_ops, + removal_schedule_added_props, ] if __name__ == '__main__':