Only populate a hash of commit items when it is going to be used by the legacy recursive commit logic. In almost all cases this isn't necessary for the commit, and this makes it possible to move the per working copy commit logic directly into the wc-db code.
* subversion/libsvn_wc/adm_ops.c (svn_wc_committed_queue_t): Remove hash. (process_committed_internal): Tweak documentation. Add hash as argument. (svn_wc_committed_queue_create): Update initialization. (svn_wc_queue_committed4): Remove setting. (svn_wc_process_committed_queue2): Create hash if necessary. Use sorted array for walking the working copies to allow clearing hash earlier.
Fix a bug in the legacy recursive commit support, which in most cases would have always disabled the recursive commit logic.
* subversion/libsvn_wc/adm_ops.c (process_committed_internal): Properly detect when to recurse.
* subversion/tests/libsvn_wc/wc-test.c (test_legacy_commit1): Remove intermediate state test, as that now would fail now. (test_legacy_commit2): New function. Testing the slightly newer but also long deprecated commit support used around 1.6. (test_funcs): Add test.