)]}'
{
  "commit": "4bec297eb6e5f30ea2fe2a2d8a92054cafa30e4f",
  "tree": "9eb41f64c61e43c2665156165264f840de230ec6",
  "parents": [
    "54fa31cd844b3de887a1915755b110287a4d2bcb"
  ],
  "author": {
    "name": "Gavin Mak",
    "email": "gavinmak@google.com",
    "time": "Tue May 19 02:07:33 2026 +0000"
  },
  "committer": {
    "name": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Aug 04 11:38:03 2026 -0700"
  },
  "message": "command: Respect smart sync override declaratively by default\n\nIntroduce a `RESPECT_SMART_SYNC_OVERRIDE` class attribute to the base\n`Command` class, defaulting to `True`. This allows subcommands to\nautomatically respect the smart sync override manifest if it exists.\n\nThe override is applied in `CommonValidateOptions` before any\nsubcommand-specific validation or execution occurs. The `sync` and\n`init` commands explicitly opt out.\n\nThis ensures all workspace-aware subcommands consistently align with the\nactive smart sync override manifest. It also fixes a bug in\nmulti-manifest setups where running a command from a submanifest would\nnot apply the override to the outer manifest, causing inconsistency when\nresolving projects across all manifests.\n\nBug: 279204331\nChange-Id: I9426e90a13a77ce6bd94b4a82efda4d485cbe116\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/585081\nReviewed-by: Mike Frysinger \u003cvapier@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": "bfafcd449dd85d88e0497bf55481de62627c7fff",
      "old_mode": 33188,
      "old_path": "command.py",
      "new_id": "8b6a4d17040712a755e4b224d99aca48285a17dc",
      "new_mode": 33188,
      "new_path": "command.py"
    },
    {
      "type": "modify",
      "old_id": "38f6ca43aae600f4111037ddde4641c03c0a81f8",
      "old_mode": 33188,
      "old_path": "subcmds/abandon.py",
      "new_id": "f1688e7b6454e88bf5fd8d98ffd72cd446c7552d",
      "new_mode": 33188,
      "new_path": "subcmds/abandon.py"
    },
    {
      "type": "modify",
      "old_id": "03d12708def4ef031b611be9e685eec282036f73",
      "old_mode": 33188,
      "old_path": "subcmds/forall.py",
      "new_id": "982b1ba5aa723b75eaf703fb471004fb02fa61c1",
      "new_mode": 33188,
      "new_path": "subcmds/forall.py"
    },
    {
      "type": "modify",
      "old_id": "348a7c8270cc914fb1d40fff03c7569aac9368f8",
      "old_mode": 33188,
      "old_path": "subcmds/info.py",
      "new_id": "594e633a3923692043c0f78b7d29513af75cc2c6",
      "new_mode": 33188,
      "new_path": "subcmds/info.py"
    },
    {
      "type": "modify",
      "old_id": "b60ef28bc4f46d13d2f201a147872d9a9a1a3db5",
      "old_mode": 33188,
      "old_path": "subcmds/init.py",
      "new_id": "772002e4d9e906bbc966043bf2582ace35e16577",
      "new_mode": 33188,
      "new_path": "subcmds/init.py"
    },
    {
      "type": "modify",
      "old_id": "9882cf0d0c1044f0ced0884d79c3e77a364fd0ec",
      "old_mode": 33188,
      "old_path": "subcmds/start.py",
      "new_id": "73dddf3f1dc732ff8438eb5cf0b696a17a3a7142",
      "new_mode": 33188,
      "new_path": "subcmds/start.py"
    },
    {
      "type": "modify",
      "old_id": "573c3444b87ed75dce2a741e37792a28b2a49f9f",
      "old_mode": 33188,
      "old_path": "subcmds/sync.py",
      "new_id": "6a88530881807634a1c20ae8ff999a26447f5bd7",
      "new_mode": 33188,
      "new_path": "subcmds/sync.py"
    },
    {
      "type": "modify",
      "old_id": "708f4a7ec8d0ddb8cd4ed68864cabb72fd09a3a7",
      "old_mode": 33188,
      "old_path": "tests/test_subcmds_gc.py",
      "new_id": "f5c415e1320924320ecafc8c8ad018582aa9e71d",
      "new_mode": 33188,
      "new_path": "tests/test_subcmds_gc.py"
    }
  ]
}
