)]}'
{
  "commit": "95d2419ea795c644279d793fdb6b4bcfacf987fa",
  "tree": "5b1547fc93a09d82ce2d4aeab15363de69fa552a",
  "parents": [
    "35fe89870f923d863d0bcec285e5b18be251651b"
  ],
  "author": {
    "name": "David M. Johnson",
    "email": "snoopdave@users.noreply.github.com",
    "time": "Sat Oct 10 16:06:23 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Oct 10 16:06:23 2026 -0400"
  },
  "message": "Manage templates, categories and comments over AtomPub (#209)\n\n* Manage templates, categories and comments over AtomPub\n\nAdd three AtomPub collections to each weblog\u0027s workspace:\n\n- Templates (/{handle}/templates): create, read, update and delete a\n  custom theme\u0027s templates, with the standard rendition as atom:content\n  and the mobile rendition as roller:rendition. Weblog administrators\n  only, and only while the weblog uses a custom theme and the site\n  allows custom themes. An empty mobile rendition removes it.\n- Categories (/{handle}/categories): create, read, update and delete.\n  A category in use is removed only with ?moveTo\u003d{id}. The entries\n  collection lists categories inline and also references a new RFC 5023\n  category document at /{handle}/categories.atomcat.\n- Comments (/{handle}/comments): moderation only. List (filter by status\n  or entry), change roller:status, delete. thr:in-reply-to (RFC 4685)\n  links to the weblog entry.\n\nMove the template rules from the Templates and TemplateEdit pages into\nWeblogTemplateEditor so the UI and AtomPub enforce the same rules, and\nadd WeblogManager.removeTemplateRendition() for mobile renditions.\n\n* Address PR #209 review findings\n\n- Refuse to delete a weblog\u0027s last category (409), as the Categories\n  page does.\n- Make isWeblogCategoryInUse() null-safe for weblogs without a default\n  category.\n- Test that deleting the default category with moveTo hands the default\n  over, and that the servlet serves the category document.\n\n* Apply the category editor\u0027s field rules to AtomPub\n\n- roller:image must be an http or https URL, as on the Categories page,\n  which now uses the same check. The category wrapper gives templates\n  only such URLs.\n- Category names and descriptions, and template names, links and\n  descriptions, are limited to 255 characters, as in the editors.\n- Test that AtomPub tags use the shared tag character rules.\n\n* Add an AtomPub reference guide (#211)\n\n* Add an AtomPub reference guide\n\ndocs/roller-atompub-guide.adoc documents Roller\u0027s whole AtomPub\ninterface: enabling and limits, BASIC and OAuth authentication, the\nservice document, and the entries, media, category, template and comment\nresources (URIs, permissions, elements, status codes), with a curl\nsession and an error table. It is built to PDF and shipped with the\nother guides.\n\n- docs/atompub/examples: XML examples included by the guide. Response\n  examples are generated from AtomWriter by AtomPubDocExamplesTest, which\n  fails when they no longer match (-Datompub.docs.update\u003dtrue rewrites\n  them). Request examples are hand-written and must parse.\n- docs/atompub/roller-atompub.rnc: RELAX NG grammar for the roller:* and\n  thr:in-reply-to elements; the test validates every example against it\n  and against the RFC 4287/5023 grammars.\n- Move the Jing helper into RelaxNgValidator for both schema tests.\n\n* Document the category image and length rules in the AtomPub guide",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0d851748545e9975effd9bf18a030ef7c27ad97f",
      "old_mode": 33188,
      "old_path": "CHANGES.md",
      "new_id": "26460a850a46c988c4fddc62546b863a59a1a15f",
      "new_mode": 33188,
      "new_path": "CHANGES.md"
    },
    {
      "type": "modify",
      "old_id": "2b65f371ba25f7545ad482a468a607be25c31ea4",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java",
      "new_id": "0f862d1eaff65d2bdb6517828e042efb2ffcebf9",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/business/WeblogManager.java"
    },
    {
      "type": "modify",
      "old_id": "def32afeeecb42322bd87cac2da0f391be34f353",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java",
      "new_id": "477179a3f73131ec468b096e60ac2ce61e2a0d27",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java"
    },
    {
      "type": "modify",
      "old_id": "d4304b4587aab76ef64256eb72d1d094a7e1dc80",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java",
      "new_id": "50e96eef75e4c6f3b8be9f5d990eef191d78f8c6",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20ed77c03db61a04fad3f82cfbe19e2ad575dd29",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/business/themes/TemplateRuleException.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1631ca181ee5e05f4a00b4540ebe0ca8bbe8cd31",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/business/themes/WeblogTemplateEditor.java"
    },
    {
      "type": "modify",
      "old_id": "4f99ad57fc0d260bce6413f3802209f8dd61c295",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogCategoryWrapper.java",
      "new_id": "e2d62fccd48a5eacd020d30c8ec70cf9c4d5e551",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/pojos/wrapper/WeblogCategoryWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "f12f6abf68df493c81837c10d342c0a81907a088",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java",
      "new_id": "5913de08d0b8c58e9218b5df36b13a6f4227b40b",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java"
    },
    {
      "type": "modify",
      "old_id": "a1f95cebb0814b187ffa8a5d258e19ac95d48179",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java",
      "new_id": "868b7f78666a58f5b3e16b89477660479e1d54da",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java"
    },
    {
      "type": "modify",
      "old_id": "157e8f4092c1a5ec2426e0cdf6a327ad9bd17926",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java",
      "new_id": "5346224de570452be40bcf6c423a9f3747e0a635",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java"
    },
    {
      "type": "modify",
      "old_id": "02e04c33ecbb3fcedd7e06d5392052de352bd2c4",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomCategories.java",
      "new_id": "b0be73ccdec2fa09a91f80d1e16d6536065cf7a2",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomCategories.java"
    },
    {
      "type": "modify",
      "old_id": "0e747f07c2ec163f66ecd7acd5b297e587e7a872",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomConstants.java",
      "new_id": "6cae609149ebaae430d25aecec03d40275dcc853",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomConstants.java"
    },
    {
      "type": "modify",
      "old_id": "96b0005676a3f127a743279712e4b193ff988a8e",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomEntry.java",
      "new_id": "b9b7fa4b72a9b563d22468c276c3093e86e4b403",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomEntry.java"
    },
    {
      "type": "modify",
      "old_id": "2b713b222bb33feb69d763dabcdb68f7e683773d",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomPerson.java",
      "new_id": "8e4bc1176bf83cd5fe8075a9b34234ec86c8a40c",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomPerson.java"
    },
    {
      "type": "modify",
      "old_id": "4940d78214819aaca0dd84ba8ab98dda427ee6f3",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomReader.java",
      "new_id": "b8c7e38cc1337cfcc6f4a91df829e62800ecc496",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomReader.java"
    },
    {
      "type": "modify",
      "old_id": "a0651fedccb8fcf2461eafc4ea88dfd5459901f7",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomRequest.java",
      "new_id": "694fddefc9c270e7edfd5899b735be2ff4f29d59",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomRequest.java"
    },
    {
      "type": "modify",
      "old_id": "2c4c7eab1ee4b95fce31021cae720b3f582eb883",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomWriter.java",
      "new_id": "c309dd61e794fa33f47faa7bf7be42b97dc3db30",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomWriter.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a29a8db0e2a9d331f1a181e5e23b2b13a1f8e3f",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/CategoryCollection.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47a6ae8c26b96c92ba1677a96c2d3e15d40e5971",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/CollectionSupport.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b865778c6960d4829ba045afd07e8d84ed74e33",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/CommentCollection.java"
    },
    {
      "type": "modify",
      "old_id": "2844bd1ef5498a320cb10740115a62d57a7357a2",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java",
      "new_id": "c76ac2cc9736e4a3c51f4765e0c993455cc80bf8",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java"
    },
    {
      "type": "modify",
      "old_id": "74094efbab9f1679363b40324c9b2ed44fd957ee",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java",
      "new_id": "4bd517c9b51d61dbed4b3f0fd4f2285a953d02ab",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java"
    },
    {
      "type": "modify",
      "old_id": "4c765ec98247245e8ad9642a2c4008f0efef5838",
      "old_mode": 33188,
      "old_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServlet.java",
      "new_id": "4dfc3755fd2586b03e7059b36294b1c8d656344a",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServlet.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "608465734fe086601b14fc85517b8e30b7e5a558",
      "new_mode": 33188,
      "new_path": "app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/TemplateCollection.java"
    },
    {
      "type": "modify",
      "old_id": "8128a7b3c39ccc65d24d1c309da52a5ae789e86f",
      "old_mode": 33188,
      "old_path": "app/src/main/resources/ApplicationResources.properties",
      "new_id": "7d9c6a35d4790d8a367d12db3bc92da2f37206d4",
      "new_mode": 33188,
      "new_path": "app/src/main/resources/ApplicationResources.properties"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1a176e34b87fe3084cfea51cd1a366b139bd542a",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/business/themes/WeblogTemplateEditorTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "490fa88cf4600c6c9f25bff63cc75fec9bcba109",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/pojos/wrapper/WeblogCategoryWrapperTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "796f3a1740a585507090997da7c423d07c5e65b4",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomPubDocExamplesTest.java"
    },
    {
      "type": "modify",
      "old_id": "e5f4ce6a043449ae9a423d0030bc4320d7a7d66f",
      "old_mode": 33188,
      "old_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomReaderTest.java",
      "new_id": "12e888afa9245e0bb5719f159b6ba1d80310b0c6",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomReaderTest.java"
    },
    {
      "type": "modify",
      "old_id": "f5d6fdc2656a3d09cf0d1fc8ac24c8ce2d60fcdd",
      "old_mode": 33188,
      "old_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomSchemaValidationTest.java",
      "new_id": "c51f3cdde81dd069ae38c742d1c63f490c6094fa",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomSchemaValidationTest.java"
    },
    {
      "type": "modify",
      "old_id": "36870dd8ec020b32772a58c962e9eb04d1638e84",
      "old_mode": 33188,
      "old_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomWriterTest.java",
      "new_id": "9f39933b54fda045272db872a9d2131f5062d253",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/AtomWriterTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4d8968ef0791ef775719d7985d0cf0836e82f2b2",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RelaxNgValidator.java"
    },
    {
      "type": "modify",
      "old_id": "62fda8edea74d2887f2eb93bd49965e4c403bac1",
      "old_mode": 33188,
      "old_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandlerTest.java",
      "new_id": "220110fc641a60fc4eea38346a39a04c9bbdaa4b",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandlerTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4387a68a98b12f3445a20629e0040acd5e9b9e3a",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomManagementTest.java"
    },
    {
      "type": "modify",
      "old_id": "0e791e43b9580058550357ccea1097e2f00d1d84",
      "old_mode": 33188,
      "old_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomProtocolTest.java",
      "new_id": "da0a7f8a342725cd4c3bbf8e3ad7484552a5aa18",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomProtocolTest.java"
    },
    {
      "type": "modify",
      "old_id": "c603b60414b4c95934327d970c43ecffae7c114d",
      "old_mode": 33188,
      "old_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServletTest.java",
      "new_id": "1e62f1b71c50cb5cbbc6ba876f2557ee482ccc31",
      "new_mode": 33188,
      "new_path": "app/src/test/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServletTest.java"
    },
    {
      "type": "modify",
      "old_id": "ae75c95c5ffa14e74d39269ebf9e99aeca866e2a",
      "old_mode": 33188,
      "old_path": "assembly-release/src/main/assembly/binary.xml",
      "new_id": "85ea353fb159a84efa5368b9dd9d5a662bdf1468",
      "new_mode": 33188,
      "new_path": "assembly-release/src/main/assembly/binary.xml"
    },
    {
      "type": "modify",
      "old_id": "6991392fa9e7d419d8f06b38c515e0f58108c838",
      "old_mode": 33188,
      "old_path": "docs/README.md",
      "new_id": "6fb2052a2bc5c29be20a575ece44684b53972682",
      "new_mode": 33188,
      "new_path": "docs/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bbca405017ea7f57495854abaff3f78841af31fa",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/README.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "67ef325423944d9a120bdc83d1c869628dd8dfb5",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/categories.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f3cfac6c0d85b94d9839a5fde670a38102283a99",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/category-entry.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f1b86ccb702a53e790789fc21465ce9d4808cb5",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/category-request.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e169b70948a3d0d189c30ccd7eecb2c1180dc10e",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/comment-entry.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d74140ef2d68f78ca68be94d5f418feb9a2dce8c",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/comment-status-request.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4b4e5ba4ebe6be60f1a29fca82e5b672b065da7e",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/comments-feed.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a9211a9aaed60ee1a485c23f8c53ed6c5babb354",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/entries-feed.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4fb2779ac372c83f528c1986ca745869d88ecc5f",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/entry-request.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b513e743c7802a2ab9d52913c5707169eb2b8b3a",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/entry-response.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5427acd06db51a0bf8049e02d17ce1c621d3c573",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/media-link-entry.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f14322575b5de90f6f69ef43f5ef7bc4999570b4",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/service.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b340626fece3d6229244df98c6ac249abf617be5",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/template-entry.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5ba17d71eb4376263caea80725ed3a5fcba9ee65",
      "new_mode": 33188,
      "new_path": "docs/atompub/examples/template-request.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2c7bb6f5e6292b61540cf2ef99bdb6d7d95919fe",
      "new_mode": 33188,
      "new_path": "docs/atompub/roller-atompub.rnc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc7a042846d3787097c461cb49e32e478837c6c3",
      "new_mode": 33188,
      "new_path": "docs/roller-atompub-guide.adoc"
    },
    {
      "type": "modify",
      "old_id": "8a0a33f2dfd09c2aab787790b0d270919120032c",
      "old_mode": 33188,
      "old_path": "docs/roller-user-guide.adoc",
      "new_id": "cb35bbb901ff4027d7d25b8bd1347417b1bdb9d8",
      "new_mode": 33188,
      "new_path": "docs/roller-user-guide.adoc"
    },
    {
      "type": "modify",
      "old_id": "076721c560dcaead6a729ab66b8e660677a8102d",
      "old_mode": 33188,
      "old_path": "pom.xml",
      "new_id": "396e9de79d4807614ec46366d5a2b58c6834e3f1",
      "new_mode": 33188,
      "new_path": "pom.xml"
    }
  ]
}
