Merge pull request #546 from pre-commit/no_ext_diff

Run git diff with --no-ext-diff
This commit is contained in:
Anthony Sottile 2017-06-09 13:01:44 -07:00 committed by GitHub
commit be1256f35a
3 changed files with 19 additions and 10 deletions

View file

@ -32,7 +32,8 @@ def _hook_msg_start(hook, verbose):
def get_changed_files(new, old):
return cmd_output(
'git', 'diff', '--name-only', '{}...{}'.format(old, new),
'git', 'diff', '--no-ext-diff', '--name-only',
'{}...{}'.format(old, new),
)[1].splitlines()
@ -85,12 +86,16 @@ def _run_single_hook(hook, repo, args, skips, cols):
))
sys.stdout.flush()
diff_before = cmd_output('git', 'diff', retcode=None, encoding=None)
diff_before = cmd_output(
'git', 'diff', '--no-ext-diff', retcode=None, encoding=None,
)
retcode, stdout, stderr = repo.run_hook(
hook,
tuple(filenames) if hook['pass_filenames'] else (),
)
diff_after = cmd_output('git', 'diff', retcode=None, encoding=None)
diff_after = cmd_output(
'git', 'diff', '--no-ext-diff', retcode=None, encoding=None,
)
file_modifications = diff_before != diff_after
@ -159,10 +164,10 @@ def _run_hooks(repo_hooks, args, environ):
if (
retval and
args.show_diff_on_failure and
subprocess.call(('git', 'diff', '--quiet')) != 0
subprocess.call(('git', 'diff', '--quiet', '--no-ext-diff')) != 0
):
print('All changes made by hooks:')
subprocess.call(('git', 'diff'))
subprocess.call(('git', 'diff', '--no-ext-diff'))
return retval
@ -179,7 +184,10 @@ def _has_unmerged_paths(runner):
def _has_unstaged_config(runner):
retcode, _, _ = runner.cmd_runner.run(
('git', 'diff', '--exit-code', runner.config_file_path),
(
'git', 'diff', '--no-ext-diff', '--exit-code',
runner.config_file_path,
),
retcode=None,
)
# be explicit, other git errors don't mean it has an unstaged config.

View file

@ -68,7 +68,8 @@ def get_conflicted_files():
# this will also include the conflicted files
tree_hash = cmd_output('git', 'write-tree')[1].strip()
merge_diff_filenames = cmd_output(
'git', 'diff', '-m', tree_hash, 'HEAD', 'MERGE_HEAD', '--name-only',
'git', 'diff', '--no-ext-diff',
'-m', tree_hash, 'HEAD', 'MERGE_HEAD', '--name-only',
)[1].splitlines()
return set(merge_conflict_filenames) | set(merge_diff_filenames)
@ -76,7 +77,7 @@ def get_conflicted_files():
@memoize_by_cwd
def get_staged_files():
return cmd_output(
'git', 'diff', '--staged', '--name-only',
'git', 'diff', '--staged', '--name-only', '--no-ext-diff',
# Everything except for D
'--diff-filter=ACMRTUXB'
)[1].splitlines()

View file

@ -21,10 +21,10 @@ def staged_files_only(cmd_runner):
"""
# Determine if there are unstaged files
retcode, diff_stdout_binary, _ = cmd_runner.run(
[
(
'git', 'diff', '--ignore-submodules', '--binary', '--exit-code',
'--no-color', '--no-ext-diff',
],
),
retcode=None,
encoding=None,
)