)]}'
{
  "commit": "4a88e31bb461c2b37a5f50bda281757b8a123721",
  "tree": "ba3a70116a60959c23cea2705de9211eb3509112",
  "parents": [
    "08f95063d0489a054362fe37ee9d0f9454c64417"
  ],
  "author": {
    "name": "Changcheng Xiao",
    "email": "xchangcheng@google.com",
    "time": "Fri Nov 24 11:22:43 2017 +0100"
  },
  "committer": {
    "name": "Chih-Hung Hsieh",
    "email": "chh@google.com",
    "time": "Fri Dec 01 14:10:17 2017 -0800"
  },
  "message": "FindOwners: Avoid reading project state in PluginConfigFactory\n\nAll of the \"Project Not Found\" exceptions happen when\nChecker#findApproval is called from the prolog predicate.\nWe can get project state from the prolog engine rather than\nread it in PluginConfigFactory. This could avoid PNF there.\nFor other places, we have to read from ProjectCache, which I\nthink will work.\n\nAlso I notice some classes in this plugin could be annotated by\n@Singleton, e.g. GetOwners.\n\nChange-Id: I6caf2572c366efa77af5fadacbd68e0052a2fe4a\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d2323822a7ec414433bc2b3bef1d1f52124aec44",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java",
      "new_id": "7e80fd996da0bf84521b2734947d8f568989f66d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java"
    },
    {
      "type": "modify",
      "old_id": "aa43896db62bfedfcf0107ee22fc2c32068a7b69",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Cache.java",
      "new_id": "3f4816609804e94230f1a849d30626c51be533c4",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Cache.java"
    },
    {
      "type": "modify",
      "old_id": "cb206b8534d790e66e0423711f66bdc8ac3dcba3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java",
      "new_id": "03225df9a8825e4ec0a53fe31033684ad67b37bc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java"
    },
    {
      "type": "modify",
      "old_id": "e450dfb571c46c12c08be9ebcdb15f479d8f45ea",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Config.java",
      "new_id": "e69275d2f3bfb84de2984f6c9ee078233f9a650e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/Config.java"
    },
    {
      "type": "modify",
      "old_id": "fd608503ba22ebd25bb0679ba421bf479e155a3d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/GetOwners.java",
      "new_id": "322a3b50ac9b491084ddcd7e16a8fc29f4c7966c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/GetOwners.java"
    },
    {
      "type": "modify",
      "old_id": "2c595b2420d67bc4f499e8a2b3545aca6771197a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java",
      "new_id": "9bb11a1af64da5da45d3e630f64d0dd1c6458a7b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java"
    },
    {
      "type": "modify",
      "old_id": "160d5faa08a3d018638aeb2d982ad50d0b8edc23",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/findowners/FindOwnersIT.java",
      "new_id": "6874245dd71296343f6ec157739918984c85acdd",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/findowners/FindOwnersIT.java"
    }
  ]
}
