)]}'
{
  "commit": "29b6630a6532b20fc26c7b44d8fa69fd4db390a0",
  "tree": "32896087c363fa9d73b6fc01c4bb6bb2a269d235",
  "parents": [
    "0b82311632d14d3f49675fb6a017c20f7a7dee37"
  ],
  "author": {
    "name": "Brian Gan",
    "email": "brgan@google.com",
    "time": "Wed Jul 29 23:25:20 2026 +0000"
  },
  "committer": {
    "name": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jul 30 10:01:58 2026 -0700"
  },
  "message": "project: make GetHead file-read fallback reftable-aware\n\nWhen both `git symbolic-ref` and `git rev-parse` fail to resolve HEAD,\nGetHead falls back to reading .git/HEAD directly. With the \"reftable\" ref\nbackend, .git/HEAD is only a stub pointing at the \"refs/heads/.invalid\"\nplaceholder while the real HEAD lives in the reftable stack. Reading the\nstub returned that bogus placeholder value.\n\nDetect the placeholder and treat HEAD as unresolvable (raising\nNoManifestException) instead of returning the invalid ref.\n\nBug: 483758905\nChange-Id: Ia0a825c0d1874686b98c5ddcdea6dc26c0d46784\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/612882\nTested-by: Brian Gan \u003cbrgan@google.com\u003e\nReviewed-by: Gavin Mak \u003cgavinmak@google.com\u003e\nCommit-Queue: Brian Gan \u003cbrgan@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b81fcd5f0c9ad35de6e13cee643ff495538ba9bb",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "36039321ffbcb6922df9bb9c8ad902ff5732a5f7",
      "new_mode": 33188,
      "new_path": "project.py"
    }
  ]
}
