Download commit-msg from gerrit-review.googlesource.com

Tell download tools/hooks/commit-msg mannually if it looks broken.

chrome-internal-reviews.googlesource.com requires
authentication to access tools/hooks/commit-msg, and
we'll get Google Sign-in page rather than expected shell script.

R=szager@chromium.org,maruel@chromium.org,ilevy@chromium.org
BUG=

Review URL: https://codereview.chromium.org/87173002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@237454 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cl.py b/git_cl.py
index 3cb6623..5e16632 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -1038,6 +1038,12 @@
     f.write(urllib2.urlopen(source).read())
 
 
+def hasSheBang(fname):
+  """Checks fname is a #! script."""
+  with open(fname) as f:
+    return f.read(2).startswith('#!')
+
+
 def DownloadHooks(force):
   """downloads hooks
 
@@ -1046,21 +1052,27 @@
   """
   if not settings.GetIsGerrit():
     return
-  server_url = settings.GetDefaultServerUrl()
-  src = '%s/tools/hooks/commit-msg' % server_url
+  src = 'https://gerrit-review.googlesource.com/tools/hooks/commit-msg'
   dst = os.path.join(settings.GetRoot(), '.git', 'hooks', 'commit-msg')
   if not os.access(dst, os.X_OK):
     if os.path.exists(dst):
       if not force:
         return
-      os.remove(dst)
     try:
       urlretrieve(src, dst)
+      if not hasSheBang(dst):
+        DieWithError('Not a script: %s\n'
+                     'You need to download from\n%s\n'
+                     'into .git/hooks/commit-msg and '
+                     'chmod +x .git/hooks/commit-msg' % (dst, src))
       os.chmod(dst, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
     except Exception:
       if os.path.exists(dst):
         os.remove(dst)
-      DieWithError('\nFailed to download hooks from %s' % src)
+      DieWithError('\nFailed to download hooks.\n'
+                   'You need to download from\n%s\n'
+                   'into .git/hooks/commit-msg and '
+                   'chmod +x .git/hooks/commit-msg' % src)
 
 
 @subcommand.usage('[repo root containing codereview.settings]')