Checkout
sussman
committed
on 10 Sep 07
Send copyfrom-args on updates *only* if the client explicitly requests them.

This keeps the 1.5 servers backward-compatible. Because incom… Show more
Send copyfrom-args on updates *only* if the client explicitly requests them.

This keeps the 1.5 servers backward-compatible.  Because incoming

copyfrom args cause old clients to error, they should only be

requested by new clients that understand them.  This means adding a

new boolean 'send_copyfrom_args' to the main libsvn_repos

editor-driver, svn_ra_do_update2(), and all four RA implementations.

Eesh!

* subversion/include/svn_repos.h

 (svn_repos_begin_report2):  new 'send_copyfrom_args' argument.

* subversion/libsvn_repos/reporter.c

 (report_baton_t):  add new boolean to reporter baton.

 (svn_repos_begin_report2):  take new boolean arg, put in baton.

 (add_file_smartly):  only try to discover copyfrom args if the

                      new boolean is set (i.e. been requested by caller).

* subversion/include/svn_ra.h

 (svn_ra_do_update2):  new 'send_copyfrom_args' argument.

* subversion/libsvn_ra/ra_loader.h

 (svn_ra__vtable_t):  update declaration.

* subversion/libsvn_ra/ra_loader.c

 (svn_ra_do_update2):  update declaration and switching func.

 (svn_ra_do_update):  pass FALSE to old version of function.

* subversion/libsvn_ra/wrapper_template.h

 (compat_do_update):  pass FALSE to compat wrapper.

* subversion/libsvn_client/update.c

 (svn_client__update_internal):  pass new arg value of TRUE to

                                 svn_ra_do_update2.

* subversion/libsvn_client/export.c

 (svn_client_export4): always pass new arg value of FALSE to

                       svn_ra_do_update2.

* subversion/libsvn_ra_local/ra_plugin.c

 (make_reporter):  take new argument, pass it to svn_repos_begin_report2.

 (svn_ra_local__do_update):  take new arg, pass to make_reporter.

 (svn_ra_local__do_switch):  pass FALSE for new arg.  For now.

 (svn_ra_local__do_status,

  svn_ra_local_do_diff):  pass FALSE for new arg.

* subversion/libsvn_ra_neon/fetch.c

 (report_baton_t):  add new boolean to reporter baton.

 (svn_ra_neon__do_update):  take new arg, pass to make_reporter.

 (svn_ra_neon__do_switch):  pass FALSE for new arg.  For now.

 (svn_ra_neon__do_status,

  svn_ra_neon_do_diff):  pass FALSE for new arg.

 (make_reporter): take new arg, put in reporter baton.  Send new

                  "<S:send-copyfrom-args>" element in report request.

* subversion/libsvn_ra_neon/ra_neon.h

 (svn_ra_neon__do_update):  update declaration.

* subversion/mod_dav_svn/reports/update.c

 (dav_svn__update_report): look for new report element, pass the new

                           arg into svn_repos_begin_report2.

* subversion/libsvn_ra_svn/client.c

 (ra_svn_update):  transmit new arg as boolean in update-request tuple.

* subversion/svnserve/serve.c

 (accept_report):  take new boolean, pass to svn_repos_begin_report2.

 (update):  possibly parse new optional boolean in update-request tuple,

            pass to accept_report.

 (switch):  pass FALSE to new accept_report arg.  For now.

 (status, diff):  pass FALSE to new accept_report arg.

* subversion/tests/libsvn_repos/repos-test.c

 (rmlocks):  pass FALSE to new svn_repos_begin_report2 arg.

* subversion/libsvn_ra_serf/ra_serf.h

 (svn_ra_serdf__do_update):  take new arg.

* subversion/libsvn_ra_serf/update.c

 (report_context_t):  add new boolean to reporter baton.

 (make_update_reporter):  take new boolean arg, put in reporter baton.

                           Send new "<S:send-copyfrom-args>" element.

 (svn_ra_serf__do_update):  take new arg, pass to make_update_reporter.

 (svn_ra_serf__do_switch):  pass FALSE for new arg.  For now.

 (svn_ra_serf__do_diff,

  svn_ra_serf__do_status):  pass FALSE for new arg.

Show less