)]}'
{
  "commit": "7b3c8e9f388c8ef56f17d2cb633c0a579730a563",
  "tree": "bb34b02e50f337fb6ab23e1a6992869841156a3b",
  "parents": [
    "4263f9279e331fabb34fac7ef92a5a1061ae1d01"
  ],
  "author": {
    "name": "Taylor Blau",
    "email": "me@ttaylorr.com",
    "time": "Mon Nov 06 17:56:33 2023 -0500"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Nov 07 11:23:52 2023 +0900"
  },
  "message": "pack-bitmap: drop --unpacked non-commit objects from results\n\nWhen performing revision queries with `--objects` and\n`--use-bitmap-index`, the output may incorrectly contain objects which\nare packed, even when the `--unpacked` option is given. This affects\ntraversals, but also other querying operations, like `--count`,\n`--disk-usage`, etc.\n\nLike in the previous commit, the fix is to exclude those objects from\nthe result set before they are shown to the user (or, in this case,\nbefore the bitmap containing the result of the traversal is enumerated\nand its objects listed).\n\nThis is performed by a new function in pack-bitmap.c, called\n`filter_packed_objects_from_bitmap()`. Note that we do not have to\ninspect individual bits in the result bitmap, since we know that the\nfirst N (where N is the number of objects in the bitmap\u0027s pack/MIDX)\nbits correspond to objects which packed by definition.\n\nIn other words, for an object to have a bitmap position (not in the\nextended index), it must appear in either the bitmap\u0027s pack or one of\nthe packs in its MIDX.\n\nThis presents an appealing optimization to us, which is that we can\nsimply memset() the corresponding number of `eword_t`\u0027s to zero,\nprovided that we handle any objects which spill into the next word (but\ndon\u0027t occupy all 64 bits of the word itself).\n\nWe only have to handle objects in the bitmap\u0027s extended index. These\nobjects may (or may not) appear in one or more pack(s). Since these\nobjects are known to not appear in either the bitmap\u0027s MIDX or pack,\nthey may be stored as loose, appear in other pack(s), or both.\n\nBefore returning a bitmap containing the result of the traversal back to\nthe caller, drop any bits from the extended index which appear in one or\nmore packs. This implements the correct behavior for rev-list operations\nwhich use the bitmap index to compute their result.\n\nCo-authored-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Taylor Blau \u003cme@ttaylorr.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6afc03d1e4c39e53c1c48deb51c16d65667979e8",
      "old_mode": 33188,
      "old_path": "pack-bitmap.c",
      "new_id": "e0d0293a33be2b81878558f5084a9455b2d66c86",
      "new_mode": 33188,
      "new_path": "pack-bitmap.c"
    },
    {
      "type": "modify",
      "old_id": "4d8e09167e78d078a6c14e7d51e3a9cb0aa7bf89",
      "old_mode": 33261,
      "old_path": "t/t6113-rev-list-bitmap-filters.sh",
      "new_id": "86c70521f1db7184e70c1eb6baf17883ecc6609f",
      "new_mode": 33261,
      "new_path": "t/t6113-rev-list-bitmap-filters.sh"
    },
    {
      "type": "modify",
      "old_id": "d59111dedec8020a138296928649eaff4de45694",
      "old_mode": 33261,
      "old_path": "t/t6115-rev-list-du.sh",
      "new_id": "c0cfda62fa72e3581cdf596d19821c0a7941caf9",
      "new_mode": 33261,
      "new_path": "t/t6115-rev-list-du.sh"
    }
  ]
}
