summaryrefslogtreecommitdiffstats
path: root/subcmds
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds')
-rw-r--r--subcmds/forall.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/subcmds/forall.py b/subcmds/forall.py
index c9de26bc..96eac541 100644
--- a/subcmds/forall.py
+++ b/subcmds/forall.py
@@ -139,6 +139,9 @@ without iterating through the remaining projects.
139 p.add_option('-e', '--abort-on-errors', 139 p.add_option('-e', '--abort-on-errors',
140 dest='abort_on_errors', action='store_true', 140 dest='abort_on_errors', action='store_true',
141 help='Abort if a command exits unsuccessfully') 141 help='Abort if a command exits unsuccessfully')
142 p.add_option('--ignore-missing', action='store_true',
143 help='Silently skip & do not exit non-zero due missing '
144 'checkouts')
142 145
143 g = p.add_option_group('Output') 146 g = p.add_option_group('Output')
144 g.add_option('-p', 147 g.add_option('-p',
@@ -323,6 +326,10 @@ def DoWork(project, mirror, opt, cmd, shell, cnt, config):
323 cwd = project['worktree'] 326 cwd = project['worktree']
324 327
325 if not os.path.exists(cwd): 328 if not os.path.exists(cwd):
329 # Allow the user to silently ignore missing checkouts so they can run on
330 # partial checkouts (good for infra recovery tools).
331 if opt.ignore_missing:
332 return 0
326 if ((opt.project_header and opt.verbose) 333 if ((opt.project_header and opt.verbose)
327 or not opt.project_header): 334 or not opt.project_header):
328 print('skipping %s/' % project['relpath'], file=sys.stderr) 335 print('skipping %s/' % project['relpath'], file=sys.stderr)