)]}'
{
  "commit": "3f93f7611628632b4dabccd21a4d22e34dbf3e33",
  "tree": "9c5070d289e05f0ca2b44aa55550c227a838806c",
  "parents": [
    "d0aee3d5b5aa4e4676bc1c3979cd6c26114fdc58"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Tue Jul 05 01:33:30 2022 +0100"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Sat Aug 06 23:29:28 2022 +0200"
  },
  "message": "Introduce the apply-objects REST-API for the whole \u0027/meta\u0027 chain\n\nWhen the parent commit of a \u0027/meta\u0027 chain of NoteDb changes is missing\nfalling back to the Git fetch command would not help, because of the\ninability of the Git fetch negotiation to find a common base.\nReplication is not transactional and not guaranteed to succeed which\nmay lead some refs being left behind with missing parent commits.\n\nThe Git fetch negotiation is the process where the two peers are\ntrying to agree on a common base to use for producing a packfile with\nthe delta from there. However, the common base may not exist for\nthe \u0027/meta\u0027 chain of commits because every NoteDb ref starts from\na brand new base and the parent commits are missing.\nJGit client isn\u0027t able to communicate this hint to the server-side\nand would instead start a long negotiation phase that is eventually\ndestinated to fail.\n\nIntroduce a new apply-objects REST-API that is capable of applying\nan entire chain of commits on the linear \u0027/meta\u0027 ref chain so that the\nGit fetch can be avoided altogether.\n\nBug: Issue 16052\nChange-Id: I7cfbeeaba2fe6190b99fe78c7631bb884abe321f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ef1edcb3d65b40f9ed40e4599b1b7ac70f628981",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java",
      "new_id": "f3e38fd7ab7046069b4d033f381f8d07507ef7b9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java"
    },
    {
      "type": "modify",
      "old_id": "eedd9eb1a5228a1173c321e5510ab3e036098256",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/RevisionReader.java",
      "new_id": "db46b237be2b38964756d89ab1018b788e47a66b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/RevisionReader.java"
    },
    {
      "type": "modify",
      "old_id": "872e17a5033a8ba2c106e94991e85c612f1be57b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectAction.java",
      "new_id": "04cc9e899b547df7317c62ae449ca1eec6320615",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectAction.java"
    },
    {
      "type": "modify",
      "old_id": "ff231d805ac682a92634ee59d2ae934249b869d7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommand.java",
      "new_id": "b27d8b7c8b931d59ab0c7a4883d1eb4022821265",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommand.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a1e1f5b6bc2311d10d542f4bf5d87b43def655ab",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectsAction.java"
    },
    {
      "type": "modify",
      "old_id": "e7b3a7fa361366d43db9c0c67c73e454f7eea262",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationApiModule.java",
      "new_id": "d1d28a6459111af267c9b334672136e47c32f554",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationApiModule.java"
    },
    {
      "type": "modify",
      "old_id": "4af2bf79bd92edaae03331bf133e8b349ec3ea09",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java",
      "new_id": "0a9b2663acae6f00d1c5167b12d88795434a5ace",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java"
    },
    {
      "type": "modify",
      "old_id": "9c33d077e5895690e2c7bfcdfd158af641528865",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionData.java",
      "new_id": "ffe98da399f8155d73eba957fed8fb369e585d88",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionData.java"
    },
    {
      "type": "modify",
      "old_id": "18fc27e4f6507fa894e8b4443d5a8acf873fb315",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionInput.java",
      "new_id": "c18e11d3bb011fa53c7e0a8f9929acc6402111b1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionInput.java"
    },
    {
      "type": "modify",
      "old_id": "09627174d0021fb4f3c2026111e6049be5b619fa",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionObjectData.java",
      "new_id": "b21f495892c49bfb014b22a42ed6f7f73eb2e87a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionObjectData.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2361f6beafdd45124ec59c0a84f4ff8032aef949",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionsInput.java"
    },
    {
      "type": "modify",
      "old_id": "01b6f1d8a45602457b2b89520d962a71b4772c3e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchApiClient.java",
      "new_id": "6b23a9f04810f7f5589f812a716e2990b4587cac",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchApiClient.java"
    },
    {
      "type": "modify",
      "old_id": "2dd991cbc854bc547d055def4dfd97893d24c916",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java",
      "new_id": "ed919def68bdfbf21ea6771bea76a66a0b6dc9ed",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java"
    },
    {
      "type": "modify",
      "old_id": "fca085bc9dd21f6f018e76cf34308d3ec40ff3d2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObject.java",
      "new_id": "2bb1caf7cf30d84feb53289b1c322a9a9597f598",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObject.java"
    },
    {
      "type": "modify",
      "old_id": "b8ff7661ac7cdc081e659ef00fd6d8d0e1514a54",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java",
      "new_id": "48e0e71019bc9af06e81259370c93db89f425cf9",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java"
    },
    {
      "type": "modify",
      "old_id": "e30061379fb778d985102b55806a3c104a57493e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/RevisionReaderIT.java",
      "new_id": "1d8520f822141292be9fd10ef17f0955f6ffafae",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/RevisionReaderIT.java"
    },
    {
      "type": "modify",
      "old_id": "cef1051cb94b01ce48a43809e6b176aa8f0a32c8",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java",
      "new_id": "1019b86dc0c7ac8b2897ed6c32315ffa5ffff07b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ActionITBase.java"
    },
    {
      "type": "modify",
      "old_id": "3678e8236cb06bebfdd14141035801b508e53a1a",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionTest.java",
      "new_id": "814ba76b1797f718f6b068d7f379d95bcefa2b00",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionTest.java"
    },
    {
      "type": "modify",
      "old_id": "51051c0985d6bdb500458eb0e072a771a26ce247",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommandTest.java",
      "new_id": "d73a6e7b198bad446a01820494590edb8d0bab53",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectCommandTest.java"
    },
    {
      "type": "modify",
      "old_id": "a1c2172337c5c32665aa26ffa022b17004ab9abd",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClientTest.java",
      "new_id": "c45e7bee58ba93eb547218a73a283a36ae5424ab",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClientTest.java"
    },
    {
      "type": "modify",
      "old_id": "0f063a4430e3ff05f10354f3be1e59e71504b524",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java",
      "new_id": "161830bf9dd1db027ddc2b0bdeee1698ab9a7935",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java"
    }
  ]
}
