)]}'
{
  "commit": "6321b26685ff9bdf5858e574dc4967761990ce5b",
  "tree": "b88176124220df7421cbcfc6855097d18bbcaa50",
  "parents": [
    "7bffc72b5bf6bc8b6065ef6712e589457a3f7f20"
  ],
  "author": {
    "name": "Gavin Mak",
    "email": "gavinmak@google.com",
    "time": "Tue Aug 25 08:58:04 2026 -0700"
  },
  "committer": {
    "name": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Sep 21 13:39:56 2026 -0700"
  },
  "message": "project: make fast-forward merges explicit\n\nEvery caller expects _FastForward to reject a merge commit. Always pass\n--ff-only and remove the optional parameter so a violated ancestry\nassumption fails instead of silently creating a merge.\n\nBug: 553599402\nChange-Id: I04690b5ca675cb7d3062df08d5e20cd82f5b9e82\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/634003\nTested-by: Gavin Mak \u003cgavinmak@google.com\u003e\nReviewed-by: Brian Gan \u003cbrgan@google.com\u003e\nCommit-Queue: Gavin Mak \u003cgavinmak@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "26e7845ca95557935c021b60bf1f7acf0a06e91f",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "a10de9904d9ca7b2a275f5456b8d13e1084b7919",
      "new_mode": 33188,
      "new_path": "project.py"
    },
    {
      "type": "modify",
      "old_id": "1c0bf5cedb76713a22c3b34363e68dba9b6bc222",
      "old_mode": 33188,
      "old_path": "subcmds/download.py",
      "new_id": "edeadefb1603c221e86061f150f2f0b5ec034d14",
      "new_mode": 33188,
      "new_path": "subcmds/download.py"
    },
    {
      "type": "modify",
      "old_id": "e7a3bec60b50d27e6b72dd7dd4cdd8eb281e17ff",
      "old_mode": 33188,
      "old_path": "tests/test_project.py",
      "new_id": "ab20105fd34b5f9cd46dcb78782893836f1551fd",
      "new_mode": 33188,
      "new_path": "tests/test_project.py"
    }
  ]
}
