)]}'
{
  "commit": "73edee1340a9bb5a0375a681015f789a47292c19",
  "tree": "0912a4b1de245af722da504b78c31139872de418",
  "parents": [
    "eafe9effda44557ea03d0f62f88a397ccd0529a0"
  ],
  "author": {
    "name": "Karl Fogel",
    "email": "kfogel@apache.org",
    "time": "Tue Nov 06 06:20:04 2007 +0000"
  },
  "committer": {
    "name": "Karl Fogel",
    "email": "kfogel@apache.org",
    "time": "Tue Nov 06 06:20:04 2007 +0000"
  },
  "message": "Finish issue #2991: client should announce capabilities to server, and\nserver should pass them along to start-commit hook.  This would allow\na server to reject commits from clients that don\u0027t don\u0027t know how to\nkeep mergeinfo up to date, for example.\n\n* subversion/libsvn_repos/repos.h\n  (struct svn_repos_t): Add new capabilities field.\n  (svn_repos__hooks_start_commit): Take new capabilities parameter.\n\n* subversion/svnserve/serve.c: Include svn_repos_private.h.\n  (find_repos): Take new capabilities parameter, use it to set a\n    capabilities list in the new repos object.\n  (serve): Pass the capabilities to find_repos.\n\n* subversion/libsvn_repos/fs-wrap.c\n  (svn_repos_fs_begin_txn_for_commit2): Pass capabilities along to \n    svn_repos__hooks_start_commit.\n\n* subversion/libsvn_repos/hooks.c\n  (svn_repos__hooks_start_commit): Take new capabilities parameter,\n    convert the list to a string, and pass along to the hook program. \n\n* subversion/include/private/svn_repos_private.h: New file.\n  (svn_repos__capabilities_as_list): New declaration.\n  (svn_repos__set_capabilities): New declaration.\n\n* subversion/libsvn_repos/repos.c: Include svn_ra.h, svn_repos_private.h.\n  (svn_repos__capabilities_as_list): Define new function.\n  (svn_repos__set_capabilities): Define new function.\n  (create_hooks): Document the new capabilities list passed to the\n    start-commit hook.\n\n* subversion/mod_dav_svn/repos.c: Include svn_repos_private.h.\n  (get_resource): Handle new SVN_RA_CAPABILITY_LOG_REVPROPS; store\n    all capabilities in repos.\n\n* subversion/libsvn_ra_local/split_url.c: Include svn_repos_private.h.\n  (svn_ra_local__split_URL): Set capabilities in new repos object.\n\n* subversion/libsvn_ra_serf/util.c\n  (svn_ra_serf__setup_serf_req): Send new SVN_RA_CAPABILITY_LOG_REVPROPS.\n\n* subversion/include/svn_dav.h\n  (SVN_DAV_PROP_NS_DAV_SVN_LOG_REVPROPS): Move definition, fix formatting.\n\n* subversion/libsvn_ra_serf/propfind_buckets.c\n  (become_request): Send SVN_DAV_PROP_NS_DAV_SVN_LOG_REVPROPS.\n\n* subversion/libsvn_ra_neon/util.c\n  (svn_ra_neon__request_dispatch): Send SVN_DAV_PROP_NS_DAV_SVN_LOG_REVPROPS.\n\n* subversion/libsvn_ra_svn/client.c\n  (open_session): Count args correctly; send SVN_RA_SVN_CAP_LOG_REVPROPS.\n  (ra_svn_has_capability): Rewrite for compactness.\n\n* subversion/include/svn_ra.h\n  (svn_ra_has_capability): Document error behavior.\n\n* subversion/libsvn_ra_serf/serf.c\n  (capabilities_headers_iterator_callback): Formatting fix for\n    consistency with the rest of the capabilities code.\n\n* subversion/include/svn_ra_svn.h\n  (SVN_RA_SVN_CAP_LOG_REVPROPS): Fix comment formatting, for consistency.\n\n* subversion/tests/cmdline/commit_tests.py\n  (start_commit_detect_capabilities): New test.\n  (test_list): Run it.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/subversion/branches/issue-2991-dev@867687 13f79535-47bb-0310-9956-ffa450edef68\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "342428adfd31814e029977b7c68ed5fefb6bbf68",
      "new_mode": 33188,
      "new_path": "subversion/include/private/svn_repos_private.h"
    },
    {
      "type": "modify",
      "old_id": "259b5ed2fa3f37aa75711bc30819295535f7975e",
      "old_mode": 33188,
      "old_path": "subversion/include/svn_dav.h",
      "new_id": "a1c60c476176dbf55438582950143225e6947dc8",
      "new_mode": 33188,
      "new_path": "subversion/include/svn_dav.h"
    },
    {
      "type": "modify",
      "old_id": "add3ab0656816c637799fd8e8e455abcea3dbd33",
      "old_mode": 33188,
      "old_path": "subversion/include/svn_ra.h",
      "new_id": "62346b7c395abdab5023e607e70efe7219d2617f",
      "new_mode": 33188,
      "new_path": "subversion/include/svn_ra.h"
    },
    {
      "type": "modify",
      "old_id": "f5dc448a2e797cfa07ca8e6d51c36e71eda08700",
      "old_mode": 33188,
      "old_path": "subversion/include/svn_ra_svn.h",
      "new_id": "99bc7d0733abf4325f7c279dddf9ea5f62f5f96c",
      "new_mode": 33188,
      "new_path": "subversion/include/svn_ra_svn.h"
    },
    {
      "type": "modify",
      "old_id": "066110be4db8795a475a3298f2a8cd8738d6ec78",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_ra_local/split_url.c",
      "new_id": "f2df3410a2565b99ef9dcb2b95757bdd5812f453",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_ra_local/split_url.c"
    },
    {
      "type": "modify",
      "old_id": "6f93cb3645fb919d62cb071d22b7fac8d8d8c296",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_ra_neon/util.c",
      "new_id": "7ed2eada4a8f25ee1d197dfc8b8af56e18108e96",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_ra_neon/util.c"
    },
    {
      "type": "modify",
      "old_id": "3eb46077a19b750ac5fcc36287bf0b6ba757df0a",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_ra_serf/propfind_buckets.c",
      "new_id": "0d7c0a6b64b96b66cd43b84a3072ed2bb9e4d682",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_ra_serf/propfind_buckets.c"
    },
    {
      "type": "modify",
      "old_id": "f92185ba6f305b28e8cc9b8f398961d4ca965667",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_ra_serf/serf.c",
      "new_id": "f4b2c6124405230d78e0ceb53fc027cf20a6db37",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_ra_serf/serf.c"
    },
    {
      "type": "modify",
      "old_id": "2a9c36a5ba708f1381c5c2f8b94f4f3d57cd3c06",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_ra_serf/util.c",
      "new_id": "5c8238599316846d365763c50afaa51cae234c39",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_ra_serf/util.c"
    },
    {
      "type": "modify",
      "old_id": "74370c49db52d64c8a54d27352aebfa86e233b1d",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_ra_svn/client.c",
      "new_id": "f6475df0d5685bb5f061b1598491ad486eb5cc0c",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_ra_svn/client.c"
    },
    {
      "type": "modify",
      "old_id": "769e6e8bc71c645f4a13bb8d7cf2816c9c16ca9d",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_repos/fs-wrap.c",
      "new_id": "25dadd11fcd56ec19a77f1a57fff8a0ac95d09a9",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_repos/fs-wrap.c"
    },
    {
      "type": "modify",
      "old_id": "f0aafd3889738af392ff71b2cd4bab67673b006d",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_repos/hooks.c",
      "new_id": "2e5bea33aa60aeb6f01192ed9ad5caf79347ef5e",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_repos/hooks.c"
    },
    {
      "type": "modify",
      "old_id": "a6abbadba3e3fe2fc6595124b143bc46d6ebd22d",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_repos/repos.c",
      "new_id": "0014263359b448ca1917ed8f1ed7ba0c8ddd5037",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_repos/repos.c"
    },
    {
      "type": "modify",
      "old_id": "a65fa0eb3a63e5a507d265a177ec57f74811ac91",
      "old_mode": 33188,
      "old_path": "subversion/libsvn_repos/repos.h",
      "new_id": "be62b0015e2ae794a4ee470fb88c81a639ade0a4",
      "new_mode": 33188,
      "new_path": "subversion/libsvn_repos/repos.h"
    },
    {
      "type": "modify",
      "old_id": "e2043ff77d8b5f44eddff057e7ba7de8f005e44f",
      "old_mode": 33188,
      "old_path": "subversion/mod_dav_svn/repos.c",
      "new_id": "ad910c1c3f6e54e61ab28a65a513f30daa801ca0",
      "new_mode": 33188,
      "new_path": "subversion/mod_dav_svn/repos.c"
    },
    {
      "type": "modify",
      "old_id": "df2143e31c42c9f1c5b99121eafe25fad4cec1e9",
      "old_mode": 33188,
      "old_path": "subversion/svnserve/serve.c",
      "new_id": "36fcbcb1d0e2100150dded5c8899dbaac81016a5",
      "new_mode": 33188,
      "new_path": "subversion/svnserve/serve.c"
    },
    {
      "type": "modify",
      "old_id": "3a3973c19a4763317aa9215b5e793033b47ea9c8",
      "old_mode": 33261,
      "old_path": "subversion/tests/cmdline/commit_tests.py",
      "new_id": "4717d08cde9a241fcb874e515dea5cb3f4c4fa67",
      "new_mode": 33261,
      "new_path": "subversion/tests/cmdline/commit_tests.py"
    }
  ]
}
