)]}'
{
  "commit": "9d7ec6911e3d46a4621eac0958afc4e4e881406c",
  "tree": "b6eb34d4dd7fa834c5754dfefc7b31af57648825",
  "parents": [
    "d2e115ee637a88b087653ed71e78e055e6cbe5be"
  ],
  "author": {
    "name": "Adithya Chakilam",
    "email": "achakilam@nvidia.com",
    "time": "Mon Aug 10 17:18:10 2026 -0500"
  },
  "committer": {
    "name": "Adithya Chakilam",
    "email": "achakilam@nvidia.com",
    "time": "Wed Aug 12 18:26:29 2026 +0000"
  },
  "message": "RefDirectory: fix pack() unlocking held locks prematurely\n\nWhen packing loose refs, if the caller already holds a lock on a ref\nbeing packed, pack() releases that lock as a side effect of deleting\nthe loose ref file. This causes the caller to lose exclusive access\nwithout being aware of it. We have observed ref rewinds in production\nthat we believe were caused by this bug.\n\nThe algorithm described in the Javadoc for PackedBatchRefUpdate\nexplicitly requires these locks to prevent concurrent writes. Releasing\na caller-held lock from pack() violates that requirement.\n\nPreserve locks held by the caller when deleting loose refs during\npacking. Add a test verifying that a caller-held lock remains locked\nafter pack() returns. The test fails without this fix.\n\nBug: jgit-281\nCo-Authored-By: Kaushik Lingarkar \u003cklingarkar@nvidia.com\u003e\nSigned-off-by: Adithya Chakilam \u003cachakilam@nvidia.com\u003e\nChange-Id: I7fad28c5fdacc172b5023c066d321f7a2f8b275a\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4dc40df52ca2c75523eb660fd4f0643f17cb3e11",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java",
      "new_id": "79f201315fb69ed60d1a357c7fc00e542927bd5c",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java"
    },
    {
      "type": "modify",
      "old_id": "a9211fe9cfc10c67d4cfc2b2a1715e8b3c06889d",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java",
      "new_id": "d5ac5aa56cf1c9f4c857aabfe6dc867301461b3a",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java"
    }
  ]
}
