)]}'
{
  "commit": "d9ac2780bc95b4f96bd03a8d968c562e29e1dab0",
  "tree": "d3eec5ab441bd55b9e61750e3f7a8ff96762de81",
  "parents": [
    "c62e9341aa72069c629da476b6375fbcb554c00f"
  ],
  "author": {
    "name": "Marcin Czech",
    "email": "maczech@gmail.com",
    "time": "Mon Oct 23 16:02:28 2023 +0200"
  },
  "committer": {
    "name": "Marcin Czech",
    "email": "maczech@gmail.com",
    "time": "Tue Oct 24 13:40:47 2023 +0000"
  },
  "message": "Reverse the order of storing commit, tree and blobs\n\nApply-object inserts commits, trees and blobs into the repository.\nThese writes are not transactional this means that if any of these\nwrites fails previous ones are not reverted. This can cause\nrepository corruption because we end up with a commit pointing to\na non existing tree or blob.\nThe revised logic safeguards the repository from corruption by\nmandating the order of insertion as follows:\n1. Blobs\n2. Trees\n3. Commits\n\nWith this order even if the insertion fails it will keep the\nrepository healthy and the git GC will clean up dangling\nobjects.\n\nBug: Issue 306464772\nChange-Id: I761e84d5e518e3c3b8ab9c151996149e5d466378\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "36356e94b407fedc0ad3cc78db4e67e96df42987",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObject.java",
      "new_id": "05033b4860c3123ec0261295d7b68d12dc0d4836",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObject.java"
    }
  ]
}
