)]}'
{
  "commit": "c15bbeaa62532cef001b63ab0e2ca9ec9ed311f3",
  "tree": "df810b6c4ed8b5017c2fbe9950eed6522d0bfa4b",
  "parents": [
    "b13b2973972412f9b66c25eca8d5ad0e15785773"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Mon Aug 01 12:22:39 2022 -0600"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Sep 14 09:53:11 2022 -0600"
  },
  "message": "Use expanded task if refreshing is not required\n\nWhen reusing defintions, use an already expanded one (and inform the\nProperties class of this so that it no longer expands it) whenever the\ntask expansion results in a definition which does not depend on external\nfactors and thus would always be the same anyway. Since definitions are\nmostly only reused for ChangeNodes, this is most effective when walking\nchanges.\n\nIn a sample walking ancestors use case, this caching and saves a small\nbut measurable amount of the total time. In the case of a task.config\nwhich walks all dependencies for a change when run with status:open\n--no-limit --task--applicable the gain can be seen below.\n\nBefore this change: 3m37s 3m34s 4m6s 6m23s 3m42s\nAfter this change:  8m7s 3m16s 3m26s 3m16s 3m21s\n\nChange-Id: I5892519583bc1b34fb9625b8b095e0af6d10c44f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "40f0f2aea32fef730a941b9bb3dfefa741680626",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java",
      "new_id": "2f543bb8b038bce739b2b33b6f97822ea24eb071",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java"
    }
  ]
}
