Do not leave dead transaction if commit is blocked by start-commit hook. Also
fix svn_repos_fs_begin_txn_for_commit2() API promise regression that was 
broken in r1376201.

* subversion/libsvn_repos/fs-wrap.c
  (svn_repos_fs_begin_txn_for_commit2): Abort created transaction if error 
   happens between transaction creation and successful return from 
   function as promised in docstring. Also keep output *TXN_P 
   parameter unaffected on failure as promised in docstring.

* subversion/tests/cmdline/commit_tests.py
  (start_commit_hook_test): Verify that there is no dead transaction left 
   when commit was blocked by start-commit hook.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1583977 13f79535-47bb-0310-9956-ffa450edef68
Avoid an assert in SVN_DEBUG mode for svn_error_dup(SVN_NO_ERROR).

* subversion/libsvn_subr/error.c
  (svn_error_dup): Simply return for SVN_NO_ERROR.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1583997 13f79535-47bb-0310-9956-ffa450edef68
* COMMITTERS : Changed my e-mail address.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584005 13f79535-47bb-0310-9956-ffa450edef68
Convert the new multi-path lock and unlock functions to a callback API,
rename from _lock2 and _unlock2 to _lock_many and _unlock_many.


* subversion/include/svn_fs.h
  (svn_fs_lock_result_t): Remove.
  (svn_fs_lock_callback_t):
  (svn_fs_lock2): Rename to...
  (svn_fs_lock_many): ...this, change to callback API.
  (svn_fs_unlock2): Rename to...
  (svn_fs_unlock_many): ...this, change to callback API.

* subversion/include/svn_repos.h
  (svn_repos_fs_lock2): Rename to...
  (svn_repos_fs_lock_many): ...this, change to callback API.
  (svn_repos_fs_unlock2): Rename to...
  (svn_repos_fs_unlock_many): ...this, change to callback API.

* subversion/libsvn_fs/fs-loader.h
  (struct fs_vtable_t): Change lock and unlock to callback API.

* subversion/libsvn_fs/fs-loader.c
  (struct lock_many_baton_t, lock_many_cb): New.
  (svn_fs_lock2): Rename to... 
  (svn_fs_lock_many): ...this, change to callback API.
  (struct lock_baton_t, lock_cb): New.
  (svn_fs_lock): Adapt to callback API.
  (svn_fs_unlock2): Rename to... 
  (svn_fs_unlock_many): ...this, change to callback API.
  (svn_fs_unlock): Adapt to callback API.

* subversion/libsvn_fs_fs/lock.h
* subversion/libsvn_fs_fs/lock.c
  (svn_fs_fs__lock, svn_fs_fs__unlock): Change to callback API.

* subversion/libsvn_fs_base/lock.h
* subversion/libsvn_fs_base/lock.c
  (svn_fs_base__lock, svn_fs_base__unlock): Change to callback API.

* subversion/libsvn_fs_x/lock.h
* subversion/libsvn_fs_x/lock.c
  (svn_fs_x__lock, svn_fs_x__unlock): Change to callback API.

* subversion/libsvn_ra_local/ra_plugin.c
  (deltify_etc): Adapt to callback API.
  (struct lock_baton_t, lock_cb): New.
  (svn_ra_local__lock, svn_ra_local__unlock): Adapt to callback API.

* subversion/libsvn_repos/fs-wrap.c
  (struct lock_many_baton_t, lock_many_cb): New.
  (svn_repos_fs_lock2): Rename to...
  (svn_repos_fs_lock_many): ...this, change to callback API.
  (struct lock_baton_t, lock_cb): New.
  (svn_repos_fs_lock): Adapt to callback API.
  (svn_repos_fs_unlock2): Rename to...
  (svn_repos_fs_unlock_many): ...this, change to callback API.
  (svn_repos_fs_unlock): Adapt to callback API.

* subversion/mod_dav_svn/version.c
  (unlock_many_cb): New.
  (release_locks): Adapt to callback API.

* subversion/svnserve/serve.c
  (write_lock): Make parameter const.
  (lock_cb): New.
  (unlock_paths): Adapt to callback API.
  (struct lock_result_t, struct lock_many_baton_t, lock_many_cb): New.
  (clear_lock_result_hash): New.
  (lock_many, unlock_many): Adapt to callback API.

* subversion/tests/libsvn_fs/locks-test.c
  (struct lock_result_t): New.
  (expect_lock, expect_error, expect_unlock, expect_unlock_error): Change
   to struct lock_result_t.
  (struct lock_many_baton_t, lock_many_cb): New.
  (lock_multiple_paths): Adapt to callback API.

* subversion/tests/libsvn_ra/ra-test.c
  (struct lock_result_t): New.
  (lock_cb, expect_lock, expect_error, expect_unlock, expect_unlock_error,
   lock_test): Change to struct lock_result_t.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584114 13f79535-47bb-0310-9956-ffa450edef68
Fix a copy/paste error in svnpubsub init script.

* tools/server-side/svnpubsub/rc.d/svnpubsub.freebsd: s/svnwcsub/svnpubsub/


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584177 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/authz_tests.py
  (authz_locking): Extend to test multiple paths, some of which fail.

* subversion/libsvn_ra_serf/lock.c
  (run_locks): Add comment about 403.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584212 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_fs_fs/cached_data.c
  (svn_fs_fs__check_rep): Don't attempt to dereference a pointer when
                          complaining about it being NULL.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584229 13f79535-47bb-0310-9956-ffa450edef68
Teach the p2l index to efficiently return the entries for arbitrary ranges
of offsets in the rev / pack file.

This allows us to use a much larger page sizes in these indexes than the
block read size, which in turn reduces the size of the page table for very
large rev / pack files.  1MB pages take about 8k to describe on disk which
is still well within the 64kB default read block size.  At the same time,
the page table of a 1TB rev file will fit into the default cache size.

* subversion/libsvn_fs_fs/index.h
  (svn_fs_fs__p2l_index_lookup): Change signature to accept an offset range
                                 instead of a single offset implying a range.

* subversion/libsvn_fs_fs/index.c
  (compare_start_p2l_entry,
   append_p2l_entries,
   struct p2l_entries_baton_t
   p2l_entries_func): New functions and data types to extract only the
                      requested sub-set of the respective p2l page entries.
  (p2l_index_lookup): Add ability to extract only a sub-range of the
                      respective page.  Also take care of misaligned ranges
                      at the end of the file.
  (svn_fs_fs__p2l_index_lookup): Iteratively gather data from individual
                                 index pages until the full range got
                                 covered.
  (svn_fs_fs__p2l_entry_lookup): Update to signature change.

* subversion/libsvn_fs_fs/cached_data.c
  (block_read): Request item descriptions for the current read block.

* subversion/libsvn_fs_fs/fs_fs.c
  (read_config): Use 1MB pages in p2l index by default.
  (write_config): Update fsfs.conf template.

* subversion/libsvn_fs_fs/pack.c
  (pack_range,
   append_revision): Read index data in index page granularity.

* subversion/libsvn_fs_fs/verify.c
  (compare_p2l_to_l2p_index,
   compare_p2l_to_rev): Same.

* tools/server-side/fsfs-stats.c
  (read_log_rev_or_packfile): Same.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584235 13f79535-47bb-0310-9956-ffa450edef68
New test to exercise multiple path lock/unlock where one path 
has a pre- hook failure.

* subversion/tests/cmdline/lock_tests.py
  (many_locks_hooks): New test.
  (test_list): Add new test.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584336 13f79535-47bb-0310-9956-ffa450edef68
Fix issue 4412, locks getting lost during update.  The root cause
was some buggy client code added as a workaround for an old server
bug.  The server bug was fixed by r869988 and released in 1.5.0. The
client side fix doesn't work and even if it did it is only needed
by clients using pre-1.5 servers if they force http-bulk-updates=no.
Removing the buggy client-side workaround fixes issue 4412 allowing
1.8 clients to use locks with 1.6 servers before 1.6.17.

* subversion/libsvn_ra_serf/update.c
  (struct report_context_t): Remove token hash.
  (create_file_baton): Don't get token from hash.
  (set_path, link_path): Don't store token in hash.
  (make_update_reporter): Don't create hash.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1584342 13f79535-47bb-0310-9956-ffa450edef68
On the remote-only-status branch: sync with trunk up to r1584342.

git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/remote-only-status@1584364 13f79535-47bb-0310-9956-ffa450edef68