diff options
Diffstat (limited to 'subcmds/init.py')
-rw-r--r-- | subcmds/init.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/subcmds/init.py b/subcmds/init.py index 45d69b79..eeddca06 100644 --- a/subcmds/init.py +++ b/subcmds/init.py | |||
@@ -17,7 +17,6 @@ from __future__ import print_function | |||
17 | import os | 17 | import os |
18 | import platform | 18 | import platform |
19 | import re | 19 | import re |
20 | import shutil | ||
21 | import sys | 20 | import sys |
22 | 21 | ||
23 | from pyversion import is_python3 | 22 | from pyversion import is_python3 |
@@ -35,6 +34,7 @@ from error import ManifestParseError | |||
35 | from project import SyncBuffer | 34 | from project import SyncBuffer |
36 | from git_config import GitConfig | 35 | from git_config import GitConfig |
37 | from git_command import git_require, MIN_GIT_VERSION | 36 | from git_command import git_require, MIN_GIT_VERSION |
37 | import platform_utils | ||
38 | 38 | ||
39 | class Init(InteractiveCommand, MirrorSafeCommand): | 39 | class Init(InteractiveCommand, MirrorSafeCommand): |
40 | common = True | 40 | common = True |
@@ -91,6 +91,9 @@ to update the working directory files. | |||
91 | g.add_option('-b', '--manifest-branch', | 91 | g.add_option('-b', '--manifest-branch', |
92 | dest='manifest_branch', | 92 | dest='manifest_branch', |
93 | help='manifest branch or revision', metavar='REVISION') | 93 | help='manifest branch or revision', metavar='REVISION') |
94 | g.add_option('-c', '--current-branch', | ||
95 | dest='current_branch_only', action='store_true', | ||
96 | help='fetch only current manifest branch from server') | ||
94 | g.add_option('-m', '--manifest-name', | 97 | g.add_option('-m', '--manifest-name', |
95 | dest='manifest_name', default='default.xml', | 98 | dest='manifest_name', default='default.xml', |
96 | help='initial manifest file', metavar='NAME.xml') | 99 | help='initial manifest file', metavar='NAME.xml') |
@@ -108,6 +111,9 @@ to update the working directory files. | |||
108 | dest='archive', action='store_true', | 111 | dest='archive', action='store_true', |
109 | help='checkout an archive instead of a git repository for ' | 112 | help='checkout an archive instead of a git repository for ' |
110 | 'each project. See git archive.') | 113 | 'each project. See git archive.') |
114 | g.add_option('--submodules', | ||
115 | dest='submodules', action='store_true', | ||
116 | help='sync any submodules associated with the manifest repo') | ||
111 | g.add_option('-g', '--groups', | 117 | g.add_option('-g', '--groups', |
112 | dest='groups', default='default', | 118 | dest='groups', default='default', |
113 | help='restrict manifest projects to ones with specified ' | 119 | help='restrict manifest projects to ones with specified ' |
@@ -121,6 +127,9 @@ to update the working directory files. | |||
121 | g.add_option('--no-clone-bundle', | 127 | g.add_option('--no-clone-bundle', |
122 | dest='no_clone_bundle', action='store_true', | 128 | dest='no_clone_bundle', action='store_true', |
123 | help='disable use of /clone.bundle on HTTP/HTTPS') | 129 | help='disable use of /clone.bundle on HTTP/HTTPS') |
130 | g.add_option('--no-tags', | ||
131 | dest='no_tags', action='store_true', | ||
132 | help="don't fetch tags in the manifest") | ||
124 | 133 | ||
125 | # Tool | 134 | # Tool |
126 | g = p.add_option_group('repo Version options') | 135 | g = p.add_option_group('repo Version options') |
@@ -230,22 +239,27 @@ to update the working directory files. | |||
230 | 'in another location.', file=sys.stderr) | 239 | 'in another location.', file=sys.stderr) |
231 | sys.exit(1) | 240 | sys.exit(1) |
232 | 241 | ||
242 | if opt.submodules: | ||
243 | m.config.SetString('repo.submodules', 'true') | ||
244 | |||
233 | if not m.Sync_NetworkHalf(is_new=is_new, quiet=opt.quiet, | 245 | if not m.Sync_NetworkHalf(is_new=is_new, quiet=opt.quiet, |
234 | clone_bundle=not opt.no_clone_bundle): | 246 | clone_bundle=not opt.no_clone_bundle, |
247 | current_branch_only=opt.current_branch_only, | ||
248 | no_tags=opt.no_tags, submodules=opt.submodules): | ||
235 | r = m.GetRemote(m.remote.name) | 249 | r = m.GetRemote(m.remote.name) |
236 | print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) | 250 | print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) |
237 | 251 | ||
238 | # Better delete the manifest git dir if we created it; otherwise next | 252 | # Better delete the manifest git dir if we created it; otherwise next |
239 | # time (when user fixes problems) we won't go through the "is_new" logic. | 253 | # time (when user fixes problems) we won't go through the "is_new" logic. |
240 | if is_new: | 254 | if is_new: |
241 | shutil.rmtree(m.gitdir) | 255 | platform_utils.rmtree(m.gitdir) |
242 | sys.exit(1) | 256 | sys.exit(1) |
243 | 257 | ||
244 | if opt.manifest_branch: | 258 | if opt.manifest_branch: |
245 | m.MetaBranchSwitch() | 259 | m.MetaBranchSwitch(submodules=opt.submodules) |
246 | 260 | ||
247 | syncbuf = SyncBuffer(m.config) | 261 | syncbuf = SyncBuffer(m.config) |
248 | m.Sync_LocalHalf(syncbuf) | 262 | m.Sync_LocalHalf(syncbuf, submodules=opt.submodules) |
249 | syncbuf.Finish() | 263 | syncbuf.Finish() |
250 | 264 | ||
251 | if is_new or m.CurrentBranch is None: | 265 | if is_new or m.CurrentBranch is None: |
@@ -387,7 +401,7 @@ to update the working directory files. | |||
387 | git_require(MIN_GIT_VERSION, fail=True) | 401 | git_require(MIN_GIT_VERSION, fail=True) |
388 | 402 | ||
389 | if opt.reference: | 403 | if opt.reference: |
390 | opt.reference = os.path.expanduser(opt.reference) | 404 | opt.reference = os.path.abspath(os.path.expanduser(opt.reference)) |
391 | 405 | ||
392 | # Check this here, else manifest will be tagged "not new" and init won't be | 406 | # Check this here, else manifest will be tagged "not new" and init won't be |
393 | # possible anymore without removing the .repo/manifests directory. | 407 | # possible anymore without removing the .repo/manifests directory. |