我正在尝试比较和合并SourceTree中的MySQL WorkBench文件,为此我创建了一个小的shell脚本,它提取.mwb文件的内容,并从其中的XML文件中删除一些无用的计数器。 然后我将这一行添加到项目根目录中的.gitconfig:
[diff "mwbdiff"]
textconv = mwb-diff
,这在.gitattributes:
中*.mwb diff=mwbdiff
现在,如果我在.mwb上更改某些内容,那么控制台上的“git diff”会显示正确的差异,SourceTree也会这样做:
问题是,如果我尝试在已经提交的版本上做同样的事情,我什么也得不到:
如果我尝试合并,结果相同。如果我尝试从控制台运行GIT,我仍然得到正确的输出:
git diff develop feature/four -- test.mwb
但如果我尝试合并,那么我会得到未解决的冲突,我不知道如何继续。
我还尝试将.gitattributes和.gitconfig更改移动到全局变量中,它实际上在控制台中工作,但它对SourceTree没有帮助。
我怀疑它与SourceTree(Mac版)中的二进制预览有关,如果我可以禁用它...
我错过了什么?我该如何解决这个问题?
答案 0 :(得分:0)
我认为这不受支持。
因此,为了避免在最终只产生输出时调用
git diff
,SourceTree会预先检测磁盘上的文件是二进制还是文本,通过是否在文件的初始块的快速样本中包含几个二进制零连续。我只能假设odt格式包含这个序列,所以SourceTree将它们视为二进制。在Mac上,我们有一个二进制预览窗格,显示支持的二进制文件之前/之后,但我们还没有将它移植到Windows。目前我们不支持您的案例,可能不会在不久的将来添加它,因为这是非常罕见的事情,大多数人只会在{{1}时看到性能下降失败了,然后我们又回到了其他技术上。我们会记录此信息以备将来支持。
来源: JIRA - textconv diff not generated
换句话说,SourceTree专门避免为SourceTree认为是二进制的文件调用git diff
。这意味着任何textconv都不会被调用。
解决这个问题的唯一方法是让SourceTree认为你的文件不是二进制文件。这可能不可行。