我使用带有Subversion的外部差异工具(Beyond Compare规则!),其中一个很棒的功能是能够使用diff程序对文件进行一些小的编辑,因为我正在查看我所做的更改.
但svn diff
在我的不同项目上工作方式不同.总之,左侧文件是一个临时文件,包含存储在Subversion(头部)中的最新版本.但在某些情况下,右侧文件是实际工作文件,而在其他文件中,它是工作文件的临时文件副本.在第一种情况下,我可以在diff程序中进行更改,它们会影响工作副本.在第二种情况下,我正在编辑临时文件,因此更改将丢失.
为什么Subversion有时会针对工作文件进行区分,但有时会针对工作文件的临时副本?如何让它始终使用工作文件?
你在这些文件上设置了svn:keywords吗?如果是,则Subversion将首先创建一个临时文件,其中包含所有扩展关键字的"未展开".这是为了避免将所有关键字行显示为不同,即使它们尚未更改.
例如,如果您将工作副本中的文件与BASE区分开来,则BASE文件没有扩展关键字(并且还存储了LF lineendings),而工作副本中的文件扩展了所有关键字(并且可以与CRLF一起存储) lineendings).如果您没有在本地修改该文件,'svn diff'会显示所有行不同(如果行结尾不匹配)或至少所有带有关键字的行都会显示为不同 - 这不是你想要的期望.