Try harder to detect an existing checkout before 'fetch'ing.
BUG=230693
R=agable@chromium.org
Review URL: https://codereview.chromium.org/1169403002.
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@295611 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/fetch.py b/fetch.py
index 04be95f..067d4c6 100755
--- a/fetch.py
+++ b/fetch.py
@@ -63,7 +63,7 @@
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 @@
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 @@
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 @@
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).'