diff --git a/clang/tools/clang-format/git-clang-format b/clang/tools/clang-format/git-clang-format --- a/clang/tools/clang-format/git-clang-format +++ b/clang/tools/clang-format/git-clang-format @@ -198,16 +198,16 @@ return 0 if opts.diff: - print_diff(old_tree, new_tree) - elif opts.diffstat: - print_diffstat(old_tree, new_tree) - else: - changed_files = apply_changes(old_tree, new_tree, force=opts.force, - patch_mode=opts.patch) - if (opts.verbose >= 0 and not opts.patch) or opts.verbose >= 1: - print('changed files:') - for filename in changed_files: - print(' %s' % filename) + return print_diff(old_tree, new_tree) + if opts.diffstat: + return print_diffstat(old_tree, new_tree) + + changed_files = apply_changes(old_tree, new_tree, force=opts.force, + patch_mode=opts.patch) + if (opts.verbose >= 0 and not opts.patch) or opts.verbose >= 1: + print('changed files:') + for filename in changed_files: + print(' %s' % filename) return 1 @@ -536,8 +536,8 @@ # We also only print modified files since `new_tree` only contains the files # that were modified, so unmodified files would show as deleted without the # filter. - subprocess.check_call(['git', 'diff', '--diff-filter=M', old_tree, new_tree, - '--']) + return subprocess.run(['git', 'diff', '--diff-filter=M', + old_tree, new_tree, '--exit-code', '--']).returncode def print_diffstat(old_tree, new_tree): """Print the diffstat between the two trees to stdout.""" @@ -548,8 +548,14 @@ # We also only print modified files since `new_tree` only contains the files # that were modified, so unmodified files would show as deleted without the # filter. - subprocess.check_call(['git', 'diff', '--diff-filter=M', '--stat', old_tree, new_tree, - '--']) + return subprocess.run(['git', + 'diff', + '--diff-filter=M', + '--stat', + old_tree, + new_tree, + '--exit-code', + '--']).returncode def apply_changes(old_tree, new_tree, force=False, patch_mode=False): """Apply the changes in `new_tree` to the working directory.