| Index: git_cl.py
 | 
| diff --git a/git_cl.py b/git_cl.py
 | 
| index 3cb66231ff896fba995c2e60c8d77b250fe021ce..5e166324f10d66ba82eb5703c94eeca4f17692b5 100755
 | 
| --- a/git_cl.py
 | 
| +++ b/git_cl.py
 | 
| @@ -1038,6 +1038,12 @@ def urlretrieve(source, destination):
 | 
|      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 @@ def DownloadHooks(force):
 | 
|    """
 | 
|    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]')
 | 
| 
 |