我有受git控制的LibreOffice Writer文件。我以前使用过.odt
格式,并使用odt2txt
通过包含来获得可读diff
[diff "odt"]
textconv = odt2txt
在我的gitconfig
文件中。我尝试使用XML文本.fodt
格式,因为文本.fodt
格式比二进制.odt
格式更适合git。
问题是,git-diff绝大多数都是XML标记,掩盖了Writer文件中更改的实际文本。实际上,使用odt
和odt2txt
要比使用fodt
容易得多。
有没有任何程序可以去掉所有的XML标记,只输出纯文本(类似于odt2txt
从odt
文件中输出的内容(,这样我就可以在diffs中看到更改的实际文本?
我在Windows下,但我使用Cygwin可以访问许多Linux工具,包括odt2txt
。但是,请注意,基于Linux的建议,如指定
textconv = sh -c 'odt2txt --raw-input "$0"'
即使安装了Cygwin,也无法在Windows下工作。Windows下的Git似乎需要一个没有操作数的命令作为过滤器。
(事实上,我通常使用SourceTree进行日常git使用,包括查看diff,并且SourceTree不换行其diff,尽管已经打开了多年的增强请求;但即使在原生git中,这也是一个问题。(
是的,使用odt2txt --raw-input
从平面.fodt
生成可读的txt
。
UNIX系统/带有sh bash的系统:
由于git-config中的textconv语句不接受参数,您应该在其语句中编写以下解决方法:
[diff "fodt"]
textconv = sh -c 'odt2txt --raw-input "$0"'
所有系统:
更改源代码中的这一行,然后编译(您可以将程序名称更改为在系统中同时具有这两个名称,例如,您可以将其称为rawinputodt2txt
(:文件odt2txt.c第48行:其中:
static int opt_raw_input = 0;
写入:
static int opt_raw_input = 1;
因此,在本次编译中,您将默认使用--raw-input
。您应该添加到配置文件中的额外行只有:
[diff "fodt"]
textconv = rawinputodt2txt
额外解释:此功能"CCD_ 18";它使用的是最新版本0.5 commit 7f18c95(0.5版本第一次发布时没有这个数字,例如:Debian GNU/Linux中打包的0.5-1+b2版本没有(。
编辑:因为CCD_;原始输入";我在odt2txt问题跟踪器中报告了它,但我没有为它写一个完整的补丁
我最终破解了自己的fodt2txt
驱动程序。它并不完美,但它完成了我需要的大部分。