I'm touching a lot of code here. Reviews would be much apprecieated. [[[ Make the diff editor able to receive copyfrom information. Involves passing down a 'send_copyfrom_args' to all RA implemtations.
Note that this commit merely allows the copyfrom args to be passed to the client. They copyfrom information is not yet stored and used. * subversion/libsvn_ra/ra_loader.c (svn_ra_do_diff4): New. (svn_ra_do_diff3): Move from here .. * subversion/libsvn_ra/deprecated.c (svn_ra_do_diff3): .. To here. (svn_ra_do_diff2): Call svn_ra_do_diff3() instead of the vtable callback since the signature has changed. * subversion/libsvn_ra/wrapper_template.h (compat_do_diff): Track the new 'send_copyfrom_args' parameter. * subversion/libsvn_ra/ra_loader.h (svn_ra__vtable_t): Add 'send_copyfrom_args' parameter. * subversion/libsvn_ra_local/ra_plugin.c (svn_ra_local__do_diff): Add 'send_copyfrom_args' parameter. * subversion/tests/cmdline/diff_tests.py (test_list): Mark diff_backward_repos_wc_copy() as XFailing. The tested code currently does not handle copied paths with no text changes. Will be fixed in a follow-up. * subversion/libsvn_ra_svn/protocol (...) Update the diff command description. * subversion/libsvn_ra_svn/client.c (ra_svn_diff): Add 'send_copyfrom_args' to the command to be written. * subversion/include/svn_ra.h (svn_ra_do_diff4): New. (svn_ra_do_diff3): Deprecate. * subversion/libsvn_wc/diff.c (add_file): Add TODO about recording the copyfrom info and checking that the copyfrom revision is within the span of the diff operation. * subversion/libsvn_client/repos_diff.c (add_file): Add TODO about recording the copyfrom info and checking that the copyfrom revision is within the span of the diff operation. * subversion/libsvn_client/diff.c (diff_repos_repos, diff_repos_wc, diff_summarize_repos_repos): Replace svn_ra_do_diff3() with svn_ra_do_diff4(). * subversion/libsvn_ra_neon/ra_neon.h (svn_ra_neon__do_diff): Add 'send_copyfrom_args' parameter. * subversion/libsvn_ra_neon/fetch.c (svn_ra_neon__do_diff): Add 'send_copyfrom_args' parameter. * subversion/libsvn_ra_serf/update.c (svn_ra_serf__do_diff): Add 'send_copyfrom_args' parameter. * subversion/libsvn_ra_serf/ra_serf.h (svn_ra_serf__do_diff): Add 'send_copyfrom_args' parameter. * subversion/svnserve/serve.c (diff): Parse the parameters for send_copyfrom_param. ]]] Thanks, Daniel