Git 涂抹并清洁过滤器

Git 涂抹并清洁过滤器

我在 git 存储库中有一些文件,它们是 unicode 制表符分隔值文件。我知道这些文件在生成时是 UTF-8 或 UTF-16 编码的。

对于我的 Windows 工作站,有时我想在 Excel 中编辑它们(不要问),我想将它们转换为 UTF-16,无论它们是以 UTF-8 还是 UTF-16 到达。

但另一方面,我确实总是希望在存储库的内部表示中使用 UTF-8。(我还希望差异有意义,因此相同的“从任何内容到 UTF-8”适用于属性diff。)

目前,我的.gitattributes定义

*.tsv diff=winutf16 filter=winutf16

意思是 (.git/config

[filter "winutf16"]
    clean = iconv -f utf-16 -t utf-8
    smudge = iconv -f utf-8 -t utf-16
    required
[diff "winutf16"]
    textconv = iconv -f utf-16 -t utf-8

鉴于我知道它只是这两个 Unicode 编码选项之一,我应该能够使用类似的方法获取编码-f $(file -b --mime-encoding file.tsv),但这需要我指定一个文件名,而文档指出

在签出时,如果指定了 smudge 命令,则该命令将从其标准输入中获取 blob 对象,并使用其标准输出来更新工作树文件。同样,在签入时,clean 命令用于转换工作树文件的内容。

所以我得到的只是一个 blob 到 stdin,一次。

有没有一种干净的方法可以在 Windows 上执行此操作而无需安装超出已经暗示的内容?

相关内容