| 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?
 | 
| 
 |