diff options
Diffstat (limited to 'subcmds/checkout.py')
-rw-r--r-- | subcmds/checkout.py | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/subcmds/checkout.py b/subcmds/checkout.py index c8a09a8e..9b429489 100644 --- a/subcmds/checkout.py +++ b/subcmds/checkout.py | |||
@@ -1,5 +1,3 @@ | |||
1 | # -*- coding:utf-8 -*- | ||
2 | # | ||
3 | # Copyright (C) 2009 The Android Open Source Project | 1 | # Copyright (C) 2009 The Android Open Source Project |
4 | # | 2 | # |
5 | # Licensed under the Apache License, Version 2.0 (the "License"); | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
@@ -14,13 +12,15 @@ | |||
14 | # See the License for the specific language governing permissions and | 12 | # See the License for the specific language governing permissions and |
15 | # limitations under the License. | 13 | # limitations under the License. |
16 | 14 | ||
17 | from __future__ import print_function | 15 | import functools |
18 | import sys | 16 | import sys |
19 | from command import Command | 17 | |
18 | from command import Command, DEFAULT_LOCAL_JOBS | ||
20 | from progress import Progress | 19 | from progress import Progress |
21 | 20 | ||
21 | |||
22 | class Checkout(Command): | 22 | class Checkout(Command): |
23 | common = True | 23 | COMMON = True |
24 | helpSummary = "Checkout a branch for development" | 24 | helpSummary = "Checkout a branch for development" |
25 | helpUsage = """ | 25 | helpUsage = """ |
26 | %prog <branchname> [<project>...] | 26 | %prog <branchname> [<project>...] |
@@ -33,28 +33,37 @@ The command is equivalent to: | |||
33 | 33 | ||
34 | repo forall [<project>...] -c git checkout <branchname> | 34 | repo forall [<project>...] -c git checkout <branchname> |
35 | """ | 35 | """ |
36 | PARALLEL_JOBS = DEFAULT_LOCAL_JOBS | ||
36 | 37 | ||
37 | def ValidateOptions(self, opt, args): | 38 | def ValidateOptions(self, opt, args): |
38 | if not args: | 39 | if not args: |
39 | self.Usage() | 40 | self.Usage() |
40 | 41 | ||
42 | def _ExecuteOne(self, nb, project): | ||
43 | """Checkout one project.""" | ||
44 | return (project.CheckoutBranch(nb), project) | ||
45 | |||
41 | def Execute(self, opt, args): | 46 | def Execute(self, opt, args): |
42 | nb = args[0] | 47 | nb = args[0] |
43 | err = [] | 48 | err = [] |
44 | success = [] | 49 | success = [] |
45 | all_projects = self.GetProjects(args[1:]) | 50 | all_projects = self.GetProjects(args[1:]) |
46 | 51 | ||
47 | pm = Progress('Checkout %s' % nb, len(all_projects)) | 52 | def _ProcessResults(_pool, pm, results): |
48 | for project in all_projects: | 53 | for status, project in results: |
49 | pm.update() | 54 | if status is not None: |
55 | if status: | ||
56 | success.append(project) | ||
57 | else: | ||
58 | err.append(project) | ||
59 | pm.update() | ||
50 | 60 | ||
51 | status = project.CheckoutBranch(nb) | 61 | self.ExecuteInParallel( |
52 | if status is not None: | 62 | opt.jobs, |
53 | if status: | 63 | functools.partial(self._ExecuteOne, nb), |
54 | success.append(project) | 64 | all_projects, |
55 | else: | 65 | callback=_ProcessResults, |
56 | err.append(project) | 66 | output=Progress('Checkout %s' % (nb,), len(all_projects), quiet=opt.quiet)) |
57 | pm.end() | ||
58 | 67 | ||
59 | if err: | 68 | if err: |
60 | for p in err: | 69 | for p in err: |