Index: gclient_scm.py |
diff --git a/gclient_scm.py b/gclient_scm.py |
index 18bc0e389653cfab2ec2fc1443a963c1887c5cb0..1c3eb79492e42d1457385915ba5b6eba9f3306db 100644 |
--- a/gclient_scm.py |
+++ b/gclient_scm.py |
@@ -69,7 +69,11 @@ class GitDiffFilterer(DiffFiltererWrapper): |
return re.sub("[a|b]/" + self._current_file, self._replacement_file, line) |
-def ask_for_data(prompt): |
+def ask_for_data(prompt, options): |
+ if options.jobs > 1: |
+ raise gclient_utils.Error("Background task requires input. Rerun " |
+ "gclient with --jobs=1 so that\n" |
+ "interaction is possible.") |
try: |
return raw_input(prompt) |
except KeyboardInterrupt: |
@@ -454,17 +458,16 @@ class GitWrapper(SCMWrapper): |
merge_args.append('--ff-only') |
merge_args.append(upstream_branch) |
merge_output = scm.GIT.Capture(merge_args, cwd=self.checkout_path) |
- except subprocess2.CalledProcessError, e: |
+ except subprocess2.CalledProcessError as e: |
if re.match('fatal: Not possible to fast-forward, aborting.', e.stderr): |
if not printed_path: |
print('\n_____ %s%s' % (self.relpath, rev_str)) |
printed_path = True |
while True: |
try: |
- # TODO(maruel): That can't work with --jobs. |
action = ask_for_data( |
'Cannot fast-forward merge, attempt to rebase? ' |
- '(y)es / (q)uit / (s)kip : ') |
+ '(y)es / (q)uit / (s)kip : ', options) |
except ValueError: |
raise gclient_utils.Error('Invalid Character') |
if re.match(r'yes|y', action, re.I): |
@@ -755,7 +758,7 @@ class GitWrapper(SCMWrapper): |
'Cannot rebase because of unstaged changes.\n' |
'\'git reset --hard HEAD\' ?\n' |
'WARNING: destroys any uncommitted work in your current branch!' |
- ' (y)es / (q)uit / (s)how : ') |
+ ' (y)es / (q)uit / (s)how : ', options) |
if re.match(r'yes|y', rebase_action, re.I): |
self._Run(['reset', '--hard', 'HEAD'], options) |
# Should this be recursive? |