From e778e57f11f208bd70c51d9cc57090a5cf9e41fa Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 4 Oct 2019 14:21:41 -0400 Subject: [PATCH] command: filter projects by active manifest groups `repo forall ` will look up all in the manifest for all manifest groups regardless of which are active. If is checked out to different locations depending on the group, this ultimately fails as we're unable to locate all of them. Simple fix is to only include projects that match the manifest groups that we already passed down & initialized to the active set, and that we already use when getting the default project list. Bug: https://crbug.com/gerrit/11677 Bug: https://crbug.com/1011226 Change-Id: I975f10f9a9e5a1cad7d87344123f8003732dab27 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/239652 Tested-by: Mike Frysinger Reviewed-by: Raul Rangel Reviewed-by: David Pursehouse --- command.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/command.py b/command.py index f7d20a22..9e113f1a 100644 --- a/command.py +++ b/command.py @@ -175,7 +175,10 @@ class Command(object): self._ResetPathToProjectMap(all_projects_list) for arg in args: - projects = manifest.GetProjectsWithName(arg) + # We have to filter by manifest groups in case the requested project is + # checked out multiple times or differently based on them. + projects = [project for project in manifest.GetProjectsWithName(arg) + if project.MatchesGroups(groups)] if not projects: path = os.path.abspath(arg).replace('\\', '/') @@ -200,7 +203,7 @@ class Command(object): for project in projects: if not missing_ok and not project.Exists: - raise NoSuchProjectError(arg) + raise NoSuchProjectError('%s (%s)' % (arg, project.relpath)) if not project.MatchesGroups(groups): raise InvalidProjectGroupsError(arg)