)]}'
{
  "commit": "3bb4871c4407c9029be9741ec40f261f1ead377d",
  "tree": "bb7b0ce7d12620a22c66ed74a68bea1e667a5180",
  "parents": [
    "35bbf701d04de5c6a71937279bc3d16f6ce36808"
  ],
  "author": {
    "name": "Gavin Mak",
    "email": "gavinmak@google.com",
    "time": "Tue Jul 07 18:53:21 2026 +0000"
  },
  "committer": {
    "name": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Jul 07 13:40:52 2026 -0700"
  },
  "message": "rebase: Resolve revisionExpr to tracking branch for --onto-manifest\n\nWhen running `repo rebase -m` (`--onto-manifest`), the command uses the\nraw `revisionExpr` from the manifest (e.g. `main`) directly as the\n`--onto` target. This can fail or behave incorrectly if it should\nreference the local tracking branch (e.g. `refs/remotes/\u003cremote\u003e/main`).\n\nResolve `project.revisionExpr` to its local tracking branch using\n`project.GetRemote().ToLocal()`. Fall back to using the raw\n`revisionExpr` value if the resolution fails (raising a `GitError`).\n\nBug: 532028666\nChange-Id: I4c1bca1374a5842688be227f6aa2afffcdad5397\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/604941\nReviewed-by: Brian Gan \u003cbrgan@google.com\u003e\nTested-by: Gavin Mak \u003cgavinmak@google.com\u003e\nCommit-Queue: Gavin Mak \u003cgavinmak@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d7e769cefb2fa489176a1f3af37ff53713257f0e",
      "old_mode": 33188,
      "old_path": "subcmds/rebase.py",
      "new_id": "af8be4ea25aacd6496b5ba993abcbd296122e598",
      "new_mode": 33188,
      "new_path": "subcmds/rebase.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d7e91731651bc60b139f6200568c01755d6b8298",
      "new_mode": 33188,
      "new_path": "tests/test_subcmds_rebase.py"
    }
  ]
}
