)]}'
{
  "commit": "c63a2f92fa9c01b1a58608a35f968da827b9ac3e",
  "tree": "076fd007d8833d48ffcd5541d9fcd3270c355656",
  "parents": [
    "0039e390000306a76388d2d2205ed72ab6148b06"
  ],
  "author": {
    "name": "kimhappy",
    "email": "hwanhee.kim@laplacian.cc",
    "time": "Thu Aug 27 10:56:16 2026 +0900"
  },
  "committer": {
    "name": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Sep 01 19:13:52 2026 -0700"
  },
  "message": "sync: tell apart same-path submanifest projects\n\nInterleaved sync remembers which projects are done and which ones are\nstill pending by Project.relpath, and lists failing projects by it as\nwell. That path is relative to the project\u0027s own (sub)manifest though,\nso once several manifests are synced together two projects can share\nit, and the sets no longer tell them apart.\n\nThe damage is done when a project turns up in a later pass, e.g. a\nsubmodule that is only derived once its parent has been synced: its\npath is already recorded as finished, so it is left out of every pass\nthat follows and never synced, while sync still reports success. With\nan outer manifest holding\n\n  \u003cproject name\u003d\"a\" path\u003d\"a\" sync-s\u003d\"true\"/\u003e\n\nwhere a carries a submodule at b, and a submanifest at sub/ holding\n\n  \u003cproject name\u003d\"sub-ab\" path\u003d\"a/b\"/\u003e\n\na fresh `repo sync` checks out sub/a/b but never a/b. Failing projects\nare reported under the same ambiguous path, and the stall detection\nmerges them too.\n\nUse RelPath(local\u003dopt.this_manifest_only) instead, which is unique\nwithin the set of projects being synced and is what GetProjects() and\nthe other subcommands already use.\n\nSpotted during the review of I30395b8a16a9154f60972e1f408a066af64ba77c.\n\nChange-Id: I5fa694b968774667be6060d9722cb57acbd2b579\nSigned-off-by: kimhappy \u003chwanhee.kim@laplacian.cc\u003e\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/622641\nReviewed-by: Gavin Mak \u003cgavinmak@google.com\u003e\nReviewed-by: Brian Gan \u003cbrgan@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bedc1f1b922e320cb5635ca5f8d4abba2781be6c",
      "old_mode": 33188,
      "old_path": "subcmds/sync.py",
      "new_id": "d88ec883e7e98ec6a703ce1e1bd0213dbfae265b",
      "new_mode": 33188,
      "new_path": "subcmds/sync.py"
    },
    {
      "type": "modify",
      "old_id": "b921069d0acb81f160454d72a52ce320a0cf764c",
      "old_mode": 33188,
      "old_path": "tests/test_subcmds_sync.py",
      "new_id": "e929f22b9eb5ca6697e0a10257f182ebd73f5927",
      "new_mode": 33188,
      "new_path": "tests/test_subcmds_sync.py"
    }
  ]
}
