summaryrefslogtreecommitdiffstats
path: root/subcmds/checkout.py
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds/checkout.py')
-rw-r--r--subcmds/checkout.py83
1 files changed, 45 insertions, 38 deletions
diff --git a/subcmds/checkout.py b/subcmds/checkout.py
index 768b6027..08012a82 100644
--- a/subcmds/checkout.py
+++ b/subcmds/checkout.py
@@ -20,12 +20,12 @@ from progress import Progress
20 20
21 21
22class Checkout(Command): 22class 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>...]
27""" 27"""
28 helpDescription = """ 28 helpDescription = """
29The '%prog' command checks out an existing branch that was previously 29The '%prog' command checks out an existing branch that was previously
30created by 'repo start'. 30created by 'repo start'.
31 31
@@ -33,43 +33,50 @@ 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 PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
37 37
38 def ValidateOptions(self, opt, args): 38 def ValidateOptions(self, opt, args):
39 if not args: 39 if not args:
40 self.Usage() 40 self.Usage()
41 41
42 def _ExecuteOne(self, nb, project): 42 def _ExecuteOne(self, nb, project):
43 """Checkout one project.""" 43 """Checkout one project."""
44 return (project.CheckoutBranch(nb), project) 44 return (project.CheckoutBranch(nb), project)
45 45
46 def Execute(self, opt, args): 46 def Execute(self, opt, args):
47 nb = args[0] 47 nb = args[0]
48 err = [] 48 err = []
49 success = [] 49 success = []
50 all_projects = self.GetProjects(args[1:], all_manifests=not opt.this_manifest_only) 50 all_projects = self.GetProjects(
51 args[1:], all_manifests=not opt.this_manifest_only
52 )
51 53
52 def _ProcessResults(_pool, pm, results): 54 def _ProcessResults(_pool, pm, results):
53 for status, project in results: 55 for status, project in results:
54 if status is not None: 56 if status is not None:
55 if status: 57 if status:
56 success.append(project) 58 success.append(project)
57 else: 59 else:
58 err.append(project) 60 err.append(project)
59 pm.update() 61 pm.update()
60 62
61 self.ExecuteInParallel( 63 self.ExecuteInParallel(
62 opt.jobs, 64 opt.jobs,
63 functools.partial(self._ExecuteOne, nb), 65 functools.partial(self._ExecuteOne, nb),
64 all_projects, 66 all_projects,
65 callback=_ProcessResults, 67 callback=_ProcessResults,
66 output=Progress('Checkout %s' % (nb,), len(all_projects), quiet=opt.quiet)) 68 output=Progress(
69 "Checkout %s" % (nb,), len(all_projects), quiet=opt.quiet
70 ),
71 )
67 72
68 if err: 73 if err:
69 for p in err: 74 for p in err:
70 print("error: %s/: cannot checkout %s" % (p.relpath, nb), 75 print(
71 file=sys.stderr) 76 "error: %s/: cannot checkout %s" % (p.relpath, nb),
72 sys.exit(1) 77 file=sys.stderr,
73 elif not success: 78 )
74 print('error: no project has branch %s' % nb, file=sys.stderr) 79 sys.exit(1)
75 sys.exit(1) 80 elif not success:
81 print("error: no project has branch %s" % nb, file=sys.stderr)
82 sys.exit(1)