blob: 4198acd12ac35d3a7441ccc5677fd04a8fdacd64 [file] [log] [blame]
Wink Saville02d79452009-04-10 13:01:24 -07001#
2# Copyright (C) 2009 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16import sys
17from command import Command
Shawn O. Pearce89e717d2009-04-18 15:04:41 -070018from progress import Progress
Wink Saville02d79452009-04-10 13:01:24 -070019
20class Checkout(Command):
21 common = True
22 helpSummary = "Checkout a branch for development"
23 helpUsage = """
24%prog <branchname> [<project>...]
Shawn O. Pearced33f43a2009-04-13 12:11:31 -070025"""
26 helpDescription = """
27The '%prog' command checks out an existing branch that was previously
28created by 'repo start'.
Wink Saville02d79452009-04-10 13:01:24 -070029
Shawn O. Pearced33f43a2009-04-13 12:11:31 -070030The command is equivalent to:
Wink Saville02d79452009-04-10 13:01:24 -070031
Shawn O. Pearced33f43a2009-04-13 12:11:31 -070032 repo forall [<project>...] -c git checkout <branchname>
Wink Saville02d79452009-04-10 13:01:24 -070033"""
34
35 def Execute(self, opt, args):
36 if not args:
37 self.Usage()
38
Shawn O. Pearce89e717d2009-04-18 15:04:41 -070039 nb = args[0]
40 err = []
41 all = self.GetProjects(args[1:])
Wink Saville02d79452009-04-10 13:01:24 -070042
Shawn O. Pearce89e717d2009-04-18 15:04:41 -070043 pm = Progress('Checkout %s' % nb, len(all))
44 for project in all:
45 pm.update()
46 if not project.CheckoutBranch(nb):
47 err.append(project)
48 pm.end()
Wink Saville02d79452009-04-10 13:01:24 -070049
Shawn O. Pearce89e717d2009-04-18 15:04:41 -070050 if err:
51 if len(err) == len(all):
52 print >>sys.stderr, 'error: no project has branch %s' % nb
53 else:
54 for p in err:
55 print >>sys.stderr,\
56 "error: %s/: cannot checkout %s" \
57 % (p.relpath, nb)
58 sys.exit(1)