2008-12-28 67 views
8

我使用Subversion的外部差异工具(超越比较规则!),其中一个重要功能是能够使用diff程序对文件进行一些小修改,因为我正在检查我所做的更改。为什么svn diff有时会将工作文件复制到临时文件?

但是svn diff对我的不同项目有不同的工作方式。总之,左边的文件是一个临时文件,包含存储在Subversion(头文件)中的最新版本。但在某些情况下,右侧文件是实际工作文件,而在另一些文件中则是工作文件的临时文件副本。在第一种情况下,我可以修改差异程序并影响工作副本。在第二种情况下,我正在编辑一个临时文件,所以更改会丢失。

为什么Subversion有时会对工作文件进行比较,但有时会对工作文件的临时副本进行比较?我怎样才能使它始终使用工作文件?

回答

11

你在这些文件上设置了svn:关键字吗?如果是,那么Subversion将首先创建一个临时文件,其中包含所有这些扩展关键字“未展开”。这是为了避免所有关键字行显示为不同,即使它们没有改变。

例如,如果您在工作副本中针对BASE区分文件,则BASE文件没有扩展关键字(并且也存储有LF行尾),而工作副本中的文件扩展了所有关键字与CRLF lineendings一起存储)。 如果你没有在本地修改该文件,'svn diff'会显示所有行不同(如果行结束不匹配)或至少所有包含关键字的行将显示为不同 - 这不是你会期待。

+0

这是svn:keywords属性!谢谢。 – 2008-12-28 16:37:53

0

也许有一些访问问题。尝试将文件设置为只读,如果svn现在打开临时文件,这是您的问题的一个可能的答案。在这种情况下,可能有一些编辑器/ IDE使用写保护文件。

+0

好的想法,但它似乎不必与写入权限或编辑保持文件打开。 – 2008-12-28 14:33:36

相关问题