)]}'
{
  "commit": "ca96eeee79bc231f8096d9e9d0b501e0495e2db7",
  "tree": "81fd102d1566bbd657df4aa2a407a05e3014cb9b",
  "parents": [
    "5bd39784cda151203aa6d97e24c21bf7fddc11de"
  ],
  "author": {
    "name": "Tamir Duberstein",
    "email": "tamird@gmail.com",
    "time": "Fri Jun 12 17:49:13 2026 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Fri Jun 12 15:56:44 2026 -0700"
  },
  "message": "ref-filter: memoize --contains with generations\n\ngit branch and git for-each-ref run a separate reachability walk for\neach ref considered by --contains and --no-contains. Refs with shared\nhistory therefore traverse the same commits repeatedly.\n\ngit tag instead uses a depth-first walk that caches results across\nrefs. That walk can perform poorly without generation numbers: a\nnegative check may walk to the root instead of stopping at a nearby\ndivergence. Generation numbers let it stop below the oldest target.\n\nUse the memoized walk for all ref-filter callers when generation\nnumbers are available. Keep git tag on its existing path without\ngenerations. Caching still helps when many tags share deep history:\nffc4b8012d (tag: speed up --contains calculation, 2011-06-11) reduced\ngit tag --contains HEAD~200 in linux-2.6 from 15.417 to 5.329 seconds.\n\nThe new shared-history perf test improves from 0.72 to 0.03 seconds. In\na repository with 62,174 remote-tracking refs, running:\n\n    git branch -r --contains c78ae85f3ce7e\n\nimproves from 104.365 seconds to 468 milliseconds.\n\nSuggested-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Tamir Duberstein \u003ctamird@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "58553dff05692eaa09e219186e5d4995426aed0d",
      "old_mode": 33188,
      "old_path": "commit-reach.c",
      "new_id": "349ca68a3761b0e16b28a05d5eefd88b060ea6d5",
      "new_mode": 33188,
      "new_path": "commit-reach.c"
    },
    {
      "type": "modify",
      "old_id": "5b23ce5db93ad32b8024011984725acf27e13afe",
      "old_mode": 33261,
      "old_path": "t/perf/p1500-graph-walks.sh",
      "new_id": "d167b4f7e1f2ade3c8ab46911811f3f447395151",
      "new_mode": 33261,
      "new_path": "t/perf/p1500-graph-walks.sh"
    }
  ]
}
