diff --git a/fetch.py b/fetch.py index 04be95fa48..067d4c61ab 100755 --- a/fetch.py +++ b/fetch.py @@ -63,7 +63,7 @@ class Checkout(object): print 'Running: %s' % (' '.join(pipes.quote(x) for x in cmd)) if self.options.dry_run: return 0 - return subprocess.check_call(cmd, **kwargs) + return subprocess.check_output(cmd, **kwargs) class GclientCheckout(Checkout): @@ -75,6 +75,15 @@ class GclientCheckout(Checkout): cmd_prefix = ('gclient',) return self.run(cmd_prefix + cmd, **kwargs) + def exists(self): + try: + gclient_root = self.run_gclient('root').strip() + return (os.path.exists(os.path.join(gclient_root, '.gclient')) or + os.path.exists(os.path.join(os.getcwd(), self.root))) + except subprocess.CalledProcessError: + pass + return os.path.exists(os.path.join(os.getcwd(), self.root)) + class GitCheckout(Checkout): @@ -120,9 +129,6 @@ class GclientGitCheckout(GclientCheckout, GitCheckout): for key in extra_keys if key in self.spec) return gclient_spec - def exists(self): - return os.path.exists(os.path.join(os.getcwd(), self.root)) - def init(self): # Configure and do the gclient checkout. self.run_gclient('config', '--spec', self._format_spec()) @@ -315,8 +321,9 @@ def run(options, spec, root): except KeyError: return 1 if checkout.exists(): - print 'You appear to already have a checkout. "fetch" is used only' - print 'to get new checkouts. Use "gclient sync" to update the checkout.' + print 'Your current directory appears to already contain, or be part of, ' + print 'a checkout. "fetch" is used only to get new checkouts. Use ' + print '"gclient sync" to update existing checkouts.' print print 'Fetch also does not yet deal with partial checkouts, so if fetch' print 'failed, delete the checkout and start over (crbug.com/230691).'