【问题标题】:Eclipse won't ignore CRLF in team synchronizationEclipse 不会在团队同步中忽略 CRLF
【发布时间】:2012-10-16 14:43:09
【问题描述】:

首先,让我解释一下我在做什么。我有一个 CVS 存储库,其中存储了 5,000 个数据定义语言文件。这 5,000 个文件是从外部数据建模应用程序生成的,它们是文本并具有 Windows CRLF。在开发过程中,如果我需要进行更改,我会重新生成 5,000 个文件,然后在 eclipse 中覆盖我本地 CVS 工作区的内容。完全覆盖/替换是为了确保我不会错过任何文件更新。覆盖/替换文件后,我使用 eclipse 进行团队

 Ignore whitespace option:
 Causes the comparison to ignore differences which are whitespace characters 
 (spaces, tabs, etc.). Also causes differences in line terminators ( LF 
 versus CRLF) to be ignored.

当我在文本比较中打开文件时,它没有显示差异,但其中一个文件顶部有一个额外的 CRLF。这是一个错误还是我在 Eclipse 中缺少一个选项?看起来问题在于它不会忽略在自己的行上的 CRLF。

【问题讨论】:

    标签: eclipse synchronization repository cvs


    【解决方案1】:

    Eclipse 比较对话框没有错误;您只是感到困惑,因为您看到了几个独立问题的输出。

    1. “忽略空格”选项只会减少比较对话框显示的更改量;它对 CVS 看到的差异没有任何影响。所以只要文件有错误的行尾,CVS 就会报错。

      某些版本控制系统允许您指定转换器来解决此问题,而 CVS 不允许。所以你真的需要生成具有正确行尾的文件。

    2. “带有额外 CRLF 的单个文件”确实有一个额外的 CRLF。找出原因并加以解决,让差异消失。

    3. 生成文件时,切勿使用PrintStreamPrintWriter。这很诱人,但是这两个有很多错误(比如close() 没有flush(),违反了他们的 API 合同),而且他们使用平台相关的行尾,这几乎不是你想要的。是的,它可能会偶然起作用,但相信我,这不是你想要的。你也不希望你支付意外提交的支票,对吧?

      如果您不使用PrintStreamPrintWriter,则出于同样的原因避免使用系统属性line.separator

      我建议写一个帮助类,它有很多PrintStream / PrintWriter 的方法,但没有错误。另外,它应该允许您将行分隔符设置为您需要的任何内容。

    注意:如果您使用Writer,请确保您还指定了字符集/编码,否则“UTF-8 到字节”的转换将与行尾一样随机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 2011-01-01
      • 2019-11-22
      相关资源
      最近更新 更多