当PC程序员更新Mac程序员最近提交的文件时,SVN diff将所有代码行标记为新行

时间:2010-02-03 18:59:31

标签: windows svn macos dreamweaver

以下是我目前遇到的情景:

  1. 程序员A(使用Mac版Dreamweaver)编辑文件client.php并将该文件提交到Project Foo的存储库的生产分支
  2. 程序员B(使用Windows版本的Dreamweaver)编辑文件client.php以修复该文件中的错误。然后他做了一个cp clientInfo.php ../prod-branch/clientInfo.php从他的工作副本到生产分支。
  3. 程序员B然后执行svn diff ../prod-branch/clientInfo.php看看svn说他的更改只是发现svn说他改变了文件中的每一行!
  4. 现在,我认为这是正在发生的事情:

    当Mac编辑文件时,Mac上的Dreamweaver会将所有Windows换行符替换为Mac换行符,以便在Dreamweaver中可读。简而言之,Dreamweaver已经改变了文件中的每一行。现在,一旦提交完成,svn就会发现文件的每个行都已更改,并将此事实标记下来。当Windows程序员进行更改并且换行符再次更改时,svn再次认为每个行都已更改。

    我的问题是:我们如何防止这种情况发生?我知道没有办法解除已经造成的损害,但我想防止将来发生这种情况。

3 个答案:

答案 0 :(得分:4)

您需要在所有文本文件上使用“svn:eol-style”属性。通常将其设置为“原生”就足够了

答案 1 :(得分:2)

svn:eol-style是一个可以在存储库中集中设置的属性,应该解决您的问题。

查看Subversion书籍中的chapter on New Line Sequences

  

此问题的解决方案是 svn:eol-style 属性。当此属性设置为有效值时,Subversion使用它来确定要对文件执行哪些特殊处理,以便文件的行结束样式不会随着来自不同操作系统的每次提交而翻转。有效值为:

答案 2 :(得分:2)

Dreamweaver可以选择设置它使用的换行符类型。编辑(在Mac上:Dreamweaver) - >首选项,代码格式,换行符类型。

让您的用户拥有相同的设置,并且事情应该在一起发挥得更好。当然,如果您可以将源控件设置为忽略换行符差异,那会更好。