代码之家  ›  专栏  ›  技术社区  ›  bn.

为什么签入到cvs中的文件会变为两倍行距?

  •  1
  • bn.  · 技术社区  · 15 年前

    问题

    在使用cvs签入文件时,经常(但不是每次)这样: .java, .cs, .xml 等等,文件的每一行都会得到一个回车。

    例子:

    在团队成员签入前归档 :

    // Begin file
        class Foo
        {
          public Foo()
          {
            // Do step 1
            // Do step 2
          }
        }
    // End file
    

    团队成员签出时的文件:

    // Begin file
    
        class Foo
    
        {
    
          public Foo()
    
          {
    
            // Do step 1
    
            // Do step 2
    
          }
    
        }
    
    // End file
    

    开发环境

    • Netbeans 6.8和现在的6.9(使用6.8时也出现了问题)。
    • Visual Studio 2008和2010。
    • 存储库:cvs;从cygwin bash shell完成的签入和签出。
    • 操作系统:寡妇XP专业版。

    我试过的

    我尝试更改值: build.compiler.emacs=true 在netbeans中的“工具”->选项下,是否认为这可能会在签入时导致某种类型的UNIX/Windows转换问题?这没什么区别。

    当文件在 Windows/IDE/Cygwin 可能导致此问题的堆栈?

    谢谢你的帮助,

    BN

    3 回复  |  直到 12 年前
        1
  •  3
  •   zwol    15 年前

    有些东西正在把dos换行符(cr-lf)转换成成对的unix换行符(只是lf)。我个人认为这是简历。您可能想尝试使用Tortoisecvs而不是Cygwin cvs。

        2
  •  1
  •   Michael Burr    15 年前

    当将文件提交到服务器时,windwos本机cvs客户机将把文本文件中的MS-DOS行尾转换为UNIX样式的行尾,以便在存储库中,文件以“规范”形式维护,并使用 \n 表示行尾。当Windows本机客户端还将转换从服务器上取下文件时结束的行。

    但是,我相信默认的cygwin-cvs客户机与UNIX客户机类似,并且假定不需要行结束转换。因此,如果使用该客户机签入带有MS DOS样式结尾(\r\n)的文件,则会出现这种混乱。

    看起来,使用Cygwin客户机的人使用的工具关心如何将文件转换为MS-DOS风格的行尾(或者什么是)。

    一个潜在的解决方案是卸载cygwin cvs客户机并在Windows/cygwin设备上安装wincvs客户机,这样即使cygwin外壳处于活动状态,也可以使用Windows本机客户机:

    在特定模式下配置您的cygwin挂载的另一种可能性(但我对cygwin还不太熟悉,不知道它的工作效果如何,也不知道它是否会带来otehr问题-我已经很久没有尝试过使用cygwin了):

        3
  •  1
  •   Bill Wilson    12 年前

    我刚刚遇到的另一种可能性是-如果文件以Unicode格式保存,但以ASCII/TEXT形式存储在CVS中,那么将添加额外的行终止符。

    推荐文章