)]}'
{
  "commit": "189b33dcbfd39fcfb3a671dcb323d29418b86875",
  "tree": "3a9b5394de7a6e04a285ef6ece10c2f6ef24af8a",
  "parents": [
    "5b298ebe23794afcce3205925d3538e41d9afa86"
  ],
  "author": {
    "name": "Fabio Ponciroli",
    "email": "ponch78@gmail.com",
    "time": "Tue May 05 14:50:31 2026 +0200"
  },
  "committer": {
    "name": "Fabio Ponciroli",
    "email": "ponch78@gmail.com",
    "time": "Tue May 05 14:50:31 2026 +0200"
  },
  "message": "FetchProcess: Report lock failure when destination ref changes\n\nSnapshot local refs before opening the fetch connection so\n`TrackingRefUpdate`s use the value populated when the fetch starts as\ntheir expected old object ID.\n\nBefore this change, local refs were loaded lazily while processing\n\"wants\". If another process changed or created the destination ref after\nthe fetch started but before that lazy read, JGit used the newer local\nvalue as the expected old object ID. The final ref update could then\nsucceed and overwrite the concurrent local change.\n\nLoad the local ref snapshot before the remote fetch connection is\nopened. Concurrent destination ref changes now make the expected old\nobject ID differ from the current ref value, causing the update to\nreport LOCK_FAILURE instead of clobbering the newer local ref.\n\nThe tests trigger the race condition by using TestProtocol.registerProto(...)\nwith a custom UploadPackFactory. The factory updates the local\ndestination ref immediately before returning the UploadPack, which\nplaces the concurrent local change after FetchProcess starts but\nbefore it finishes building the TrackingRefUpdate.\n\nBug: jgit-252\nChange-Id: Ib46363251862a7018c60bd4c36f003d267f354d5\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "657a93ba1b3c7680883e1f2d9c890920ae3c96b9",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/TestProtocolTest.java",
      "new_id": "29d080b764e1571bbfa69de63bc37c041a18dd33",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/TestProtocolTest.java"
    },
    {
      "type": "modify",
      "old_id": "c510194ee6aa67ea00b28121286f98b23575202e",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java",
      "new_id": "e4304426f03d30405cab4634f95d36f0189c111e",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java"
    }
  ]
}
