Jon Foster <>

Found Patch Review Suggested
r884842 r999179, r998880, r910212, r884900, r850071 r999182, r927222 r999868, r943619, r934387

r850071 | sussman | 2004-06-15 04:14:53 +0000 (Tue, 15 Jun 2004)

Cleanup warnings in svn-push.c.  

Patch by: Mark Benedetto King <>
          Jon Foster <>

* contrib/client-side/svn-push/svn-push.c
  Add #include <svn_cmdline.h>
  (my_commit_callback): Replace %i with %SVN_REVNUM_T_FMT.
  (new_change_file_prop): Make static.
  (new_change_dir_prop): Make static.
  (do_job): Make delta_editor const, in order to respect
   the interface to ra->get_commit_editor().  Introduce
   new variable, "my_delta_editor", to hold the locally
   modified editor.  Conditionally compile the declaration
   of the authentication related local variables, since
   their references are only conditionally compiled.
  (main): Remove an unused local variable.

r884842 | stsp | 2009-11-27 11:58:41 +0000 (Fri, 27 Nov 2009)

Fix a bug in svnsync causing stale sync-locks on mirror repositories.

* subversion/svnsync/main.c
  (get_lock): The lock attempt is done in iteration N, and success is
   checked in iteration N+1. Prevent the case where svnsync attempts
   to take the lock in the very last iteration, doesn't check for
   success, and ends up erroring out, leaving behind a stale lock.

Found by: Jon Foster <>
Based on patch by: philip

r884900 | julianfoad | 2009-11-27 15:58:52 +0000 (Fri, 27 Nov 2009)

* subversion/svnsync/main.c
  (svnsync_options): Remove stray newline after --config-option help text.

Patch by: Jon Foster <jon.foster{_AT_}>

r910212 | stsp | 2010-02-15 12:57:18 +0000 (Mon, 15 Feb 2010)

Add a --disable-locking option to svnsync.

The built-in locking of svnsync has a known race condition (see issue #3546).
This option allows those who'd rather use an external locking mechaninism
(such as tools like flock and lockfile) to disable svnsync's internal locking
entirely. This avoids associated network overhead, and stale locks in case the
network connection drops unexpectedly.

* subversion/svnsync/main.c
  (svnsync__opt): Add svnsync_opt_disable_locking.
  (svnsync_cm): Enable the new --disable-locking option for the
   init, sync, and copy-revprops subcommands.
  (svnsync_options): Document --disable-locking option.
  (opt_baton_t): New field 'disable_locking'.
  (initialize_cmd, synchronize_cmd, copy_revprops_cmd): Don't use
   locking if the --disable-locking option was passed.
  (main): Pass the --disable-locking option into the opt baton.

Patch by: Jon Foster <>

r927222 | rdonch | 2010-03-24 23:29:20 +0000 (Wed, 24 Mar 2010)

SWIG/Python: enable callback functions to return Subversion errors (by
throwing a SubversionException).

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c:
  (callback_exception_error): Extend to check for a SubversionException
   and attempt to translate it into an svn_error_t*.

* subversion/bindings/swig/python/tests/
  (SubversionRepositoryTestCase.test_cease_invocation): New test for
   the above functionality.

Patch by: Alexey Neyman <>
Review by: Jon Foster <>

r934387 | julianfoad | 2010-04-15 12:28:24 +0000 (Thu, 15 Apr 2010)

* roadmap.html: Fix some broken links, and delete some others.

Suggested by: Jon Foster <Jon.Foster{_AT_}>

r943619 | cmpilato | 2010-05-12 18:28:19 +0000 (Wed, 12 May 2010)

Fix issue #3637.  This introduces a new syntax for 'svnsync sync' and
'svnsync copy-revprops', plus a new --revision (-r) option for use
with 'svnsync copy-revprops'.

* subversion/svnsync/main.c
  (svnsync_cmd_table): Update usage messages for 'sync' and
    'copy-revprops' subcommands.  Add support for '-r' to
  (svnsync_options): Add '--revision (-r)' option.
  (opt_baton_t): Add 'start_rev' and 'end_rev' parameters.
  (open_source_session): Now accept a 'from_url' parameter, which is
    the preferred URL to use to open from_session.
  (do_synchronize, do_copy_revprops): Update call to
    open_source_session(), using baton-provided 'from_url' (if any).
  (synchronize_cmd): Allow a second command-line argument, the source
    URL.  If we get one, validate it and pass it to
  (resolve_revnums): New, broken out from copy_revprops_cmd().
  (copy_revprops_cmd): Determine which syntax is in use: the one where
    the second command-line argument is the source URL, or the one where
    it's a revision/range.  If the former, validate the source URL and
    pass it to make_subcommand_baton().
  (main): Initialize new revision opt_baton members, and parse
    '--revision (-r)' options.

* subversion/tests/cmdline/
  (run_sync): Add 'source_url' optional parameter.  Callers updated.
  (run_copy_revprops): Add 'source_url' parameter.  Callers updated.
  (run_test): Pass 'repo_url' to run_sync() and run_copy_revprops().

Suggested by:  Jon Foster <Jon.Foster{_AT_}>

r998880 | danielsh | 2010-09-20 10:36:29 +0000 (Mon, 20 Sep 2010)

Use a new, distinct error code if svn_fs_change_rev_prop2's old_value_p
doesn't match.

* subversion/include/svn_error_codes.h
  (SVN_ERR_BAD_OLD_VALUE): New error code.

* subversion/libsvn_fs_fs/fs_fs.c
  (change_rev_prop_body): Use SVN_ERR_BAD_OLD_VALUE when appropriate.

* subversion/libsvn_fs_base/revs-txns.c
  (svn_fs_base__set_rev_prop): Use SVN_ERR_BAD_OLD_VALUE when appropriate.

* subversion/include/svn_fs.h
  (svn_fs_change_rev_prop2): Update documentation.

* subversion/tests/libsvn_fs/fs-test.c
  (FAILS_WITH_BPV): Rename to...
  (FAILS_WITH_BOV): ... this.  Change to test for SVN_ERR_BAD_OLD_VALUE.
  (revision_props): Change to use FAILS_WITH_BOV instead of FAILS_WITH_BPV.

Patch by: Jon Foster <>

r999179 | danielsh | 2010-09-21 01:37:41 +0000 (Tue, 21 Sep 2010)

On the atomic-revprop branch:

status code inside a 207 multi-status response.

Patch by: Jon Foster <>

(except the notes/ part, which I forgot to ask him to write)

* notes/http-and-webdav/webdav-protocol
  (PROPPATCH):  Document the protocol extension and its goal.

* subversion/mod_dav_svn/util.c
  (dav_svn__convert_err): Map SVN_ERR_FS_PROP_BASEVALUE_MISMATCH to 412.

* subversion/libsvn_ra_neon/util.c
   (multistatus_baton_t): New member 'contains_precondition_error'.
   (end_207_element): Check for HTTP 412 status code and create
                      a SVN_ERR_FS_PROP_BASEVALUE_MISMATCH error if found.

* subversion/libsvn_ra_serf/ra_serf.h
   (svn_ra_serf__server_error_t): New member 'contains_precondition_error'.

* subversion/libsvn_ra_serf/util.c
   (parse_dav_status): New method.
   (start_207): Parse DAV:status XML element.
   (end_207): Parse DAV:status XML element.  Use
              SVN_ERR_FS_PROP_BASEVALUE_MISMATCH error code if applicable.
   (svn_ra_serf__handle_multistatus_only): Initialise new member.

r999182 | danielsh | 2010-09-21 01:53:59 +0000 (Tue, 21 Sep 2010)

On the atomic-revprop branch:

Extend the tests to explicitly enforce the correct error code.  To this end,
move some of the logic from the Python tests to the C helper.

Specifically, the helper is now always expected to exit(0), regardless of
whether the revpropchange should succeed; it if exits with a non-zero code, then
the test itself will fail.

Review by: Jon Foster

* subversion/tests/cmdline/atomic-ra-revprop-change.c
  (USAGE_MSG):  Document new argv argument.
  (change_rev_prop):  Take WANT_ERROR parameter and use it.
  (main):  Parse another argv argument and pass it to change_rev_prop().

* subversion/tests/cmdline/svntest/
    Take WANT_ERROR parameter and pass it to atomic-ra-revprop-change.

* subversion/tests/cmdline/svntest/
    Take WANT_ERROR parameter and pass it to run_atomic_ra_revprop_change().

* subversion/tests/cmdline/
  (atomic_over_ra.FAILS_WITH_BPV, atomic_over_ra.PASSES_WITHOUT_BPV):
    Update calls for new parameter and changed semantics (return code
    is always zero now).

r999868 | danielsh | 2010-09-22 10:57:55 +0000 (Wed, 22 Sep 2010)

On the atomic-revprop branch:

Let svnsync warn the user whenever the server doesn't support atomic locking.

Suggested by: Jon Foster

* subversion/svnsync/main.c
  (get_lock): Warn on stderr whenever the server doesn't support atomic revprops.

* subversion/svnrdump/load_editor.c
  (get_lock): Ditto.