| Index: third_party/upload.py
 | 
| diff --git a/third_party/upload.py b/third_party/upload.py
 | 
| index ee2b4c2b4c4432bf84bee80226abc32bc27c2305..cdde7112a5de2c276e2b1b17a043fe0a8b93e376 100755
 | 
| --- a/third_party/upload.py
 | 
| +++ b/third_party/upload.py
 | 
| @@ -1214,8 +1214,19 @@ class GitVCS(VersionControlSystem):
 | 
|      # git config key "diff.external" is used).
 | 
|      env = os.environ.copy()
 | 
|      if 'GIT_EXTERNAL_DIFF' in env: del env['GIT_EXTERNAL_DIFF']
 | 
| -    return RunShell(["git", "diff", "--no-ext-diff", "--full-index", "-M"]
 | 
| -                    + extra_args, env=env)
 | 
| +    # -M/-C will not print the diff for the deleted file when a file is renamed.
 | 
| +    # This is confusing because the original file will not be shown on the
 | 
| +    # review when a file is renamed. So first get the diff of all deleted files,
 | 
| +    # then the diff of everything except deleted files with rename and copy
 | 
| +    # support enabled.
 | 
| +    cmd = ["git", "diff", "--no-ext-diff", "--full-index"]
 | 
| +    diff = RunShell(cmd + ["--diff-filter=D"] + extra_args, env=env,
 | 
| +        silent_ok=True)
 | 
| +    diff += RunShell(cmd + ["-C", "--diff-filter=ACMRT"] + extra_args, env=env,
 | 
| +        silent_ok=True)
 | 
| +    if not diff:
 | 
| +      ErrorExit("No output from %s" % (cmd + extra_args))
 | 
| +    return diff
 | 
|  
 | 
|    def GetUnknownFiles(self):
 | 
|      status = RunShell(["git", "ls-files", "--exclude-standard", "--others"],
 | 
| @@ -1871,7 +1882,7 @@ def GuessVCSName(options):
 | 
|      if returncode == 0:
 | 
|        return (VCS_CVS, None)
 | 
|    except OSError, (errno, message):
 | 
| -    if error != 2:
 | 
| +    if errno != 2:
 | 
|        raise
 | 
|  
 | 
|    return (VCS_UNKNOWN, None)
 | 
| 
 |