)]}'
{
  "commit": "b4ec08db341116ced37925fd38e7668625c4af8c",
  "tree": "bfa04e7c794926c8969270a8c2f37fb2300a6099",
  "parents": [
    "5c1c006307cac302b07d42ed3172a3cb3e630dcc"
  ],
  "author": {
    "name": "Antonio Barone",
    "email": "syntonyze@gmail.com",
    "time": "Tue Apr 23 17:51:22 2024 +0200"
  },
  "committer": {
    "name": "Antonio Barone",
    "email": "syntonyze@gmail.com",
    "time": "Tue Apr 23 18:16:00 2024 +0200"
  },
  "message": "Introduce `quickMatchSearchForReuse` config.\n\nDuring the search for reuse phase jgit attempts to find the best object\nrepresentation by scanning all existing packfiles.\n\nThis ensures that the best delta representation is selected from all the\navailable ones, effectively saving space when repacking objects in\npackfiles.\n\nIn a scenario where the number of packfiles is large however (i.e.\nthousands of packfiles), this thorough search to find the best object\nrepresentation could be quite time consuming, up to the point where it\nbecomes unacceptable, leading to a \"Search for reuse phase\" to last\nseveral minutes.\n\nIntroduce the possibility to trade-off between efficiency and the\nquality of object representation chosen during the search for reuse\nphase, by introducing the `quickMatchSearchForReuse` config.\n\nWhen enabled, the search stops scanning upon finding the first matching\nobject representation, potentially sacrificing finding the best\nrepresentation for efficiency.\n\nTo increase the chance to find the best (or at least a very good) object\nrepresentation, when `quickMatchSearchForReuse` is enabled, the\npackfiles are scanned from the most recent to the oldest, giving\npriority to the ones having a bitmap, so that the most recent repacks\nare traversed first.\n\nWe tested this on a ~3Gb repository having ~4M objects spanning across\n4k packfiles on a Mac M3 with 36 GB ram: The search for reuse phase\nduring a GC operation goes down from ~3 minutes to ~20 seconds.\n\nChange-Id: Ib44efded20c2e09a44b6234412a2cf94e7cd4b0f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "78930e62676851f72b77ec09fcdb76a300cc2be4",
      "old_mode": 33188,
      "old_path": "Documentation/config-options.md",
      "new_id": "aa726d2698d5466c855bb560ae7f22336d4dd399",
      "new_mode": 33188,
      "new_path": "Documentation/config-options.md"
    },
    {
      "type": "modify",
      "old_id": "24a81b6715c76587022533c41750c3e830013358",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackWriterTest.java",
      "new_id": "d21d214cb1cfad0cc6b3be37d4efb5b367ce7ccb",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/PackWriterTest.java"
    },
    {
      "type": "modify",
      "old_id": "f87329ccc2b94a5b872ed35980cdc9c4cf1d488c",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java",
      "new_id": "dd59731716780646297dc61b2bff30349d643ff3",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java"
    },
    {
      "type": "modify",
      "old_id": "8221cff44257e53814bb573219aa6e407c2d13ad",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java",
      "new_id": "42cd24bf3cafceeb8d5615a70918839dd9e7649f",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java"
    },
    {
      "type": "modify",
      "old_id": "4350f9791555b0a0672ddb64b36b9fe9a5bb23db",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java",
      "new_id": "863c83b250ee7d45d0b8b4391fd1f872a571784d",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java"
    },
    {
      "type": "modify",
      "old_id": "0edf3c5ad026a9497f045715c7f5efa58fccc6f4",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java",
      "new_id": "b9b8507e72a79b540f919c6b69008001e06c4851",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java"
    },
    {
      "type": "modify",
      "old_id": "8373d6809acc1afe70a65bd67b189489a2ff71e0",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java",
      "new_id": "3cd99e234a0aae9e408ac77cedf25ec1c1b27f79",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackConfig.java"
    }
  ]
}
