在git中的任何方式,添加只有空格更改的所有文件到分段?

时间:2015-06-24 11:04:11

标签: git whitespace

我们使用的库中有一个更新,其中包括在文件末尾清理/标准化换行符。由于我认为这个更改是一个完全安全的更改,我希望能够自动说出任何具有diff 的文件,如

diff --git a/ExampleFile.cs b/ExampleFile.cs
index abcdef..abcd 100755
--- a/ExampleFile.cs
+++ b/ExampleFile.cs
@@ -88,4 +88,4 @@ namespace com.sixminute
         }

     }
-}
\ No newline at end of file
+}

直接进入暂存,所以我只需处理/审查已更改的“真实”文件?基本上,应该添加任何文件,如果我运行git diff -w ExampleFile.cs并返回一个空字符串。

我已经找到了一种使用git自动执行此操作的方法,但我看不到有任何直接的方法可以执行此操作。我的解决方案是编写一个python帮助器脚本(下面的git只是我shell中git二进制文件的sh.Command包装器),

for fname in git.diff('--name-only', '--full-index', 'HEAD').splitlines():
    if '' == git.diff('-w', fname):
        print 'adding', fname
        git.add(fname)

但对于这样的事情,我有点自然地认为git会内置一些内容,但如果是,我就无法在文档中找到它的详细信息。

2 个答案:

答案 0 :(得分:1)

man git-diff说:

  

- 忽略空白行

     

忽略线条全部为空白的更改。

尝试这样的事情:

for fname in $(git diff --name-only --full-index HEAD)
do
   diff=$(git diff -w --ignore-blank-lines)
   [ -z "$diff" ] && git add $fname
done

答案 1 :(得分:1)

使用Python和Python sh库(https://github.com/amoffat/sh),

提交我自己的答案
import sh

git = sh.git.bake('--no-pager', _cwd='/Developer/repos/git/example')

for fname in git.diff('--name-only', '--full-index', 'HEAD').splitlines():
    diff = git.diff('-w', fname)
    print diff
    if '' == diff:
        print 'adding', fname
        git.add(fname)