OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """A wrapper script to manage a set of client modules in different SCM. | 6 """A wrapper script to manage a set of client modules in different SCM. |
7 | 7 |
8 This script is intended to be used to help basic management of client | 8 This script is intended to be used to help basic management of client |
9 program sources residing in one or more Subversion modules and Git | 9 program sources residing in one or more Subversion modules and Git |
10 repositories, along with other modules it depends on, also in Subversion or Git, | 10 repositories, along with other modules it depends on, also in Subversion or Git, |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 usage: cleanup [options] [--] [svn cleanup args/options] | 146 usage: cleanup [options] [--] [svn cleanup args/options] |
147 | 147 |
148 Valid options: | 148 Valid options: |
149 --verbose : output additional diagnostics | 149 --verbose : output additional diagnostics |
150 """, | 150 """, |
151 "config": """Create a .gclient file in the current directory; this | 151 "config": """Create a .gclient file in the current directory; this |
152 specifies the configuration for further commands. After update/sync, | 152 specifies the configuration for further commands. After update/sync, |
153 top-level DEPS files in each module are read to determine dependent | 153 top-level DEPS files in each module are read to determine dependent |
154 modules to operate on as well. If optional [url] parameter is | 154 modules to operate on as well. If optional [url] parameter is |
155 provided, then configuration is read from a specified Subversion server | 155 provided, then configuration is read from a specified Subversion server |
156 URL. Otherwise, a --spec option must be provided. | 156 URL. Otherwise, a --spec option must be provided. A --name option overrides |
| 157 the default name for the solutions. |
157 | 158 |
158 usage: config [option | url] [safesync url] | 159 usage: config [option | url] [safesync url] |
159 | 160 |
160 Valid options: | 161 Valid options: |
| 162 --name path : alternate relative path for the solution |
161 --spec=GCLIENT_SPEC : contents of .gclient are read from string parameter. | 163 --spec=GCLIENT_SPEC : contents of .gclient are read from string parameter. |
162 *Note that due to Cygwin/Python brokenness, it | 164 *Note that due to Cygwin/Python brokenness, it |
163 probably can't contain any newlines.* | 165 probably can't contain any newlines.* |
164 | 166 |
165 Examples: | 167 Examples: |
166 gclient config https://gclient.googlecode.com/svn/trunk/gclient | 168 gclient config https://gclient.googlecode.com/svn/trunk/gclient |
167 configure a new client to check out gclient.py tool sources | 169 configure a new client to check out gclient.py tool sources |
| 170 gclient config --name tools https://gclient.googlecode.com/svn/trunk/gclient |
168 gclient config --spec='solutions=[{"name":"gclient",""" | 171 gclient config --spec='solutions=[{"name":"gclient",""" |
169 '"url":"https://gclient.googlecode.com/svn/trunk/gclient",' | 172 '"url":"https://gclient.googlecode.com/svn/trunk/gclient",' |
170 '"custom_deps":{}}]', | 173 '"custom_deps":{}}]', |
171 "diff": """Display the differences between two revisions of modules. | 174 "diff": """Display the differences between two revisions of modules. |
172 (Does 'svn diff' for each checked out module and dependences.) | 175 (Does 'svn diff' for each checked out module and dependences.) |
173 Additional args and options to 'svn diff' can be passed after | 176 Additional args and options to 'svn diff' can be passed after |
174 gclient options. | 177 gclient options. |
175 | 178 |
176 usage: diff [options] [--] [svn args/options] | 179 usage: diff [options] [--] [svn args/options] |
177 | 180 |
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 if len(args) < 1 and not options.spec: | 955 if len(args) < 1 and not options.spec: |
953 raise gclient_utils.Error("required argument missing; see 'gclient help " | 956 raise gclient_utils.Error("required argument missing; see 'gclient help " |
954 "config'") | 957 "config'") |
955 if os.path.exists(options.config_filename): | 958 if os.path.exists(options.config_filename): |
956 raise gclient_utils.Error("%s file already exists in the current directory" | 959 raise gclient_utils.Error("%s file already exists in the current directory" |
957 % options.config_filename) | 960 % options.config_filename) |
958 client = GClient('.', options) | 961 client = GClient('.', options) |
959 if options.spec: | 962 if options.spec: |
960 client.SetConfig(options.spec) | 963 client.SetConfig(options.spec) |
961 else: | 964 else: |
962 # TODO(darin): it would be nice to be able to specify an alternate relpath | |
963 # for the given URL. | |
964 base_url = args[0].rstrip('/') | 965 base_url = args[0].rstrip('/') |
965 name = base_url.split("/")[-1] | 966 if not options.name: |
| 967 name = base_url.split("/")[-1] |
| 968 else: |
| 969 # specify an alternate relpath for the given URL. |
| 970 name = options.name |
966 safesync_url = "" | 971 safesync_url = "" |
967 if len(args) > 1: | 972 if len(args) > 1: |
968 safesync_url = args[1] | 973 safesync_url = args[1] |
969 client.SetDefaultConfig(name, base_url, safesync_url) | 974 client.SetDefaultConfig(name, base_url, safesync_url) |
970 client.SaveConfig() | 975 client.SaveConfig() |
971 | 976 |
972 | 977 |
973 def DoExport(options, args): | 978 def DoExport(options, args): |
974 """Handle the export subcommand. | 979 """Handle the export subcommand. |
975 | 980 |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 option_parser.add_option("", "--head", action="store_true", default=False, | 1202 option_parser.add_option("", "--head", action="store_true", default=False, |
1198 help=("skips any safesync_urls specified in " | 1203 help=("skips any safesync_urls specified in " |
1199 "configured solutions")) | 1204 "configured solutions")) |
1200 option_parser.add_option("", "--delete_unversioned_trees", | 1205 option_parser.add_option("", "--delete_unversioned_trees", |
1201 action="store_true", default=False, | 1206 action="store_true", default=False, |
1202 help=("on update, delete any unexpected " | 1207 help=("on update, delete any unexpected " |
1203 "unversioned trees that are in the checkout")) | 1208 "unversioned trees that are in the checkout")) |
1204 option_parser.add_option("", "--snapshot", action="store_true", default=False, | 1209 option_parser.add_option("", "--snapshot", action="store_true", default=False, |
1205 help=("(revinfo only), create a snapshot file " | 1210 help=("(revinfo only), create a snapshot file " |
1206 "of the current version of all repositories")) | 1211 "of the current version of all repositories")) |
| 1212 option_parser.add_option("", "--name", |
| 1213 help="specify alternate relative solution path") |
1207 option_parser.add_option("", "--gclientfile", default=None, | 1214 option_parser.add_option("", "--gclientfile", default=None, |
1208 metavar="FILENAME", | 1215 metavar="FILENAME", |
1209 help=("specify an alternate .gclient file")) | 1216 help=("specify an alternate .gclient file")) |
1210 | 1217 |
1211 if len(argv) < 2: | 1218 if len(argv) < 2: |
1212 # Users don't need to be told to use the 'help' command. | 1219 # Users don't need to be told to use the 'help' command. |
1213 option_parser.print_help() | 1220 option_parser.print_help() |
1214 return 1 | 1221 return 1 |
1215 # Add manual support for --version as first argument. | 1222 # Add manual support for --version as first argument. |
1216 if argv[1] == '--version': | 1223 if argv[1] == '--version': |
(...skipping 27 matching lines...) Expand all Loading... |
1244 | 1251 |
1245 if "__main__" == __name__: | 1252 if "__main__" == __name__: |
1246 try: | 1253 try: |
1247 result = Main(sys.argv) | 1254 result = Main(sys.argv) |
1248 except gclient_utils.Error, e: | 1255 except gclient_utils.Error, e: |
1249 print >> sys.stderr, "Error: %s" % str(e) | 1256 print >> sys.stderr, "Error: %s" % str(e) |
1250 result = 1 | 1257 result = 1 |
1251 sys.exit(result) | 1258 sys.exit(result) |
1252 | 1259 |
1253 # vim: ts=2:sw=2:tw=80:et: | 1260 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |