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).'