summaryrefslogtreecommitdiffstats
path: root/subcmds/branches.py
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds/branches.py')
-rw-r--r--subcmds/branches.py49
1 files changed, 26 insertions, 23 deletions
diff --git a/subcmds/branches.py b/subcmds/branches.py
index 59b5cb28..08c6389c 100644
--- a/subcmds/branches.py
+++ b/subcmds/branches.py
@@ -98,6 +98,22 @@ is shown, then the branch appears in all projects.
98""" 98"""
99 PARALLEL_JOBS = DEFAULT_LOCAL_JOBS 99 PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
100 100
101 @classmethod
102 def _ExpandProjectToBranches(cls, project_idx):
103 """Expands a project into a list of branch names & associated info.
104
105 Args:
106 project_idx: project.Project index
107
108 Returns:
109 List[Tuple[str, git_config.Branch, int]]
110 """
111 branches = []
112 project = cls.get_parallel_context()["projects"][project_idx]
113 for name, b in project.GetBranches().items():
114 branches.append((name, b, project_idx))
115 return branches
116
101 def Execute(self, opt, args): 117 def Execute(self, opt, args):
102 projects = self.GetProjects( 118 projects = self.GetProjects(
103 args, all_manifests=not opt.this_manifest_only 119 args, all_manifests=not opt.this_manifest_only
@@ -107,17 +123,20 @@ is shown, then the branch appears in all projects.
107 project_cnt = len(projects) 123 project_cnt = len(projects)
108 124
109 def _ProcessResults(_pool, _output, results): 125 def _ProcessResults(_pool, _output, results):
110 for name, b in itertools.chain.from_iterable(results): 126 for name, b, project_idx in itertools.chain.from_iterable(results):
127 b.project = projects[project_idx]
111 if name not in all_branches: 128 if name not in all_branches:
112 all_branches[name] = BranchInfo(name) 129 all_branches[name] = BranchInfo(name)
113 all_branches[name].add(b) 130 all_branches[name].add(b)
114 131
115 self.ExecuteInParallel( 132 with self.ParallelContext():
116 opt.jobs, 133 self.get_parallel_context()["projects"] = projects
117 expand_project_to_branches, 134 self.ExecuteInParallel(
118 projects, 135 opt.jobs,
119 callback=_ProcessResults, 136 self._ExpandProjectToBranches,
120 ) 137 range(len(projects)),
138 callback=_ProcessResults,
139 )
121 140
122 names = sorted(all_branches) 141 names = sorted(all_branches)
123 142
@@ -191,19 +210,3 @@ is shown, then the branch appears in all projects.
191 else: 210 else:
192 out.write(" in all projects") 211 out.write(" in all projects")
193 out.nl() 212 out.nl()
194
195
196def expand_project_to_branches(project):
197 """Expands a project into a list of branch names & associated information.
198
199 Args:
200 project: project.Project
201
202 Returns:
203 List[Tuple[str, git_config.Branch]]
204 """
205 branches = []
206 for name, b in project.GetBranches().items():
207 b.project = project
208 branches.append((name, b))
209 return branches