Mercurial + MQ EOL行为

时间:2011-08-04 10:59:26

标签: mercurial eol mercurial-queue

我在Win + OSX上使用mercurial + mq,EOL问题让我感到害怕。 我已经激活了EOL扩展,添加了.hgeol,如下所示:

[patterns]
**.sln = CRLF
**.vcproj = CRLF
**.vcxproj = CRLF
**.vcproj.filters = CRLF
**.vcxproj.filters = CRLF
**autoexp.dat = CRLF
**Makefile = LF
** = native

并且一切似乎都工作得很好..在Windows上(好吧,我有几个文件有行结束问题,我在第一个修补程序中修复它们,也包括.hgeol)。

然后我搬到Mac,假设它也可以在那里工作,对吧?嗯,错了。当我qpush第一个补丁(带有“.hgeol”文件的那个+行结束更改)时,它可以工作,但我看到一组“修改过的”文件(它与我在Windows上“修复”的文件完全相同,这样他们就不再显示出修改了!)。无论如何,我尝试“hg qrefresh”以获得线路更改(以为我稍后会弄清楚)...但没有运气:如果我继续qpush我的其他补丁,我开始geting拒绝:(

任何想法如何解决这个/导致它的原因?这让我发疯了......

1 个答案:

答案 0 :(得分:0)

让我们同意编译器知道如何处理任何新的行格式甚至混合。 所以,我的建议是:

  1. 保留特定于Windows的文件(.sln.vcproj等),以便您设置
  2. 确保所有文本编辑(所有操作系统)同意 SAME ONE 新行惯例。
  3. 将您使用文本编辑器触摸的所有文件转换为新的行约定(使用dos2unix之类的工具)
  4. 承诺改变
  5. 您现有的所有补丁都应该遵守

    一个。您可能需要逐个应用它们,然后再次清理文件并刷新这些补丁以便修改换行符

  6. 在此之后,只要你:

    ,你就应该
    1. 执行使用不同的不合规编辑器编辑同一存储
    2. 通过不同操作系统的共享访问同一个repo,并以某种方式使用错误的编辑器......
    3. 希望这会有所帮助;)

      问候。