diff --git a/command.py b/command.py index ee1f68c14..129919ca5 100644 --- a/command.py +++ b/command.py @@ -516,6 +516,22 @@ class Command: ) return result + def GetSmartSyncOverridePath(self, manifest=None) -> str: + """Return the path where smart sync writes its override manifest.""" + if manifest is None: + manifest = self.manifest + return os.path.join( + manifest.manifestProject.worktree, "smart_sync_override.xml" + ) + + def TryOverrideManifestWithSmartSync(self, manifest=None) -> None: + """Override manifest with smart_sync_override.xml if it exists.""" + if manifest is None: + manifest = self.manifest + smart_sync_manifest_path = self.GetSmartSyncOverridePath(manifest) + if os.path.isfile(smart_sync_manifest_path): + manifest.Override(smart_sync_manifest_path) + def ManifestList(self, opt): """Yields all of the manifests to traverse. diff --git a/subcmds/forall.py b/subcmds/forall.py index 01c2f0d13..2304e4382 100644 --- a/subcmds/forall.py +++ b/subcmds/forall.py @@ -242,13 +242,7 @@ without iterating through the remaining projects. mirror = self.manifest.IsMirror - smart_sync_manifest_name = "smart_sync_override.xml" - smart_sync_manifest_path = os.path.join( - self.manifest.manifestProject.worktree, smart_sync_manifest_name - ) - - if os.path.isfile(smart_sync_manifest_path): - self.manifest.Override(smart_sync_manifest_path) + self.TryOverrideManifestWithSmartSync() if opt.regex: projects = self.FindProjects(args, all_manifests=all_trees) diff --git a/subcmds/sync.py b/subcmds/sync.py index 291bc6243..8c2591180 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -2050,9 +2050,7 @@ later is required to fix a server side protocol bug. manifest.Override(opt.manifest_name) manifest_name = opt.manifest_name - smart_sync_manifest_path = os.path.join( - manifest.manifestProject.worktree, "smart_sync_override.xml" - ) + smart_sync_manifest_path = self.GetSmartSyncOverridePath(manifest) if opt.clone_bundle is None: opt.clone_bundle = manifest.CloneBundle