This small patch makes it so that when you do 'svn propedit --revprop', the tmpfile's name is "svn-revprop-rN.tmp" (where N is the number of the revision whose revprop is being edited).
For regular properties, nothing has changed: the tmpfile name is still just "svn-prop.tmp". This change is useful because many editors display the file's basename during editing (e.g., in a status line somewhere near the bottom of the screen). So if you get interrupted while editing a revprop, when you come back to your editor hours or days later, it's nice to have as many clues as possible as to what you were doing :-). Comments welcome. It passes all tests, and I *think* it should be a pretty uncontroversial improvement, but I wanted to run it by you all before committing since it's been a while (~12 years?) since my most recent substantive change to code or test suite. Best regards, -Karl
[[[ Distinguish between regular properties and revprops in tmpfile name. * subversion/svn/propedit-cmd.c (svn_cl__propedit): In the revprop case, create a tmpfile name that indicates that a revprop is being edited and on which revision. * subversion/tests/cmdline/prop_tests.py (tmpfile_name_matches_prop_type): New test function. (test_list): Run it. ]]] Index: subversion/svn/propedit-cmd.c =================================================================== --- subversion/svn/propedit-cmd.c (revision 1885919) +++ subversion/svn/propedit-cmd.c (working copy) @@ -143,7 +143,9 @@ SVN_ERR(svn_cmdline__edit_string_externally( &propval, NULL, opt_state->editor_cmd, temp_dir, - propval, "svn-prop", + propval, + apr_psprintf(pool, "svn-revprop-r%ld", + (opt_state->start_revision.value.number)), ctx->config, svn_prop_needs_translation(pname), opt_state->encoding, pool)); Index: subversion/tests/cmdline/prop_tests.py =================================================================== --- subversion/tests/cmdline/prop_tests.py (revision 1885919) +++ subversion/tests/cmdline/prop_tests.py (working copy) @@ -2829,6 +2829,33 @@ expected_status, extra_files=extra_files) + +# Test that editing a regular property results in a temporary file +# based on the name "svn-prop" but editing a revprop results in a +# temporary file based on the name "svn-revprop-rN" (where "N" is +# the number of the revision whose revprop would be edited). +def tmpfile_name_matches_prop_type(sbox): + "propedit tmpfile name matches property type" + + sbox.build() + + # We want the editor invocation to fail -- all we care about is the + # name of the tmpfile left over after that failure. I'm guessing + # you don't have a editor named 'af968da2ce9' on your system. + os.environ['SVN_EDITOR'] = 'af968da2ce9' + + svntest.actions.run_and_verify_svn(None, + ".*af968da2ce9.*svn-revprop-r1\\.tmp.*", + 'propedit', '--revprop', + '-r1', 'svn:log', + sbox.repo_url) + + svntest.actions.run_and_verify_svn(None, + ".*af968da2ce9.*svn-prop\\.tmp.*", + 'propedit', 'ignored-propname', + os.path.join(sbox.wc_dir, 'A', 'mu')) + + ######################################################################## # Run the tests @@ -2880,6 +2907,7 @@ iprops_list_abspath, wc_propop_on_url, prop_conflict_root, + tmpfile_name_matches_prop_type, ] if __name__ == '__main__':