Sir*_*lot 5 git whitespace grep file-extension
我一直无法弄清楚如何在提交中仅在Python文件上运行'git diff --check'。我有3个文件的提交:
$ git show --name-only
...
tools/gitHooks/preReceive.py
tools/gitHooks/unittests/testPreReceive.py
Makefile
Run Code Online (Sandbox Code Playgroud)
最后2个文件中包含尾随空格。
$ git diff --check HEAD~1 HEAD
tools/gitHooks/unittests/testPreReceive.py:75: trailing whitespace.
+newmock = Mock()
Makefile:41: new blank line at EOF.
Run Code Online (Sandbox Code Playgroud)
我想将空白检查限制为仅Python文件。这样做可以给我正确的文件:
$ git diff --name-only HEAD~1 HEAD | grep ".py"
tools/gitHooks/preReceive.py
tools/gitHooks/unittests/testPreReceive.py
Run Code Online (Sandbox Code Playgroud)
但是,当我将文件名通过管道传递到“ git diff --check”(带有或不带有xargs)时,我得到了错误的输出。
$ git diff --name-only HEAD~1 HEAD | grep ".py" | xargs git diff --check HEAD~1 HEAD --
$
$ git diff --name-only HEAD~1 HEAD | grep ".py" | git diff --check HEAD~1 HEAD --
tools/gitHooks/unittests/testPreReceive.py:75: trailing whitespace.
+newmock = Mock()
Makefile:41: new blank line at EOF.
Run Code Online (Sandbox Code Playgroud)
我也尝试过此方法以及它的一些变体,但是没有运气:
$ git diff --check HEAD~1 HEAD -- "*.py"
$
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?我觉得我已经接近答案了。
小智 2
原来我使用了错误的 grep。
$ git diff --name-only HEAD~1 HEAD | grep \.py$ | \
$ xargs git diff --check HEAD~1 HEAD --
tools/gitHooks/unittests/testPreReceive.py:75: trailing whitespace.
+newmock = Mock()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3098 次 |
| 最近记录: |