为什么检入CVS的文件会变成双倍行距?

问题描述 投票:1回答:3

问题

经常(但不是每次)使用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完成签到和签出。
  • 操作系统:Windows XP Professional。

我曾经尝试过什么

我尝试在工具 - >选项下更改NetBeans中的值:build.compiler.emacs=true,认为这可能会在签入时导致某种Unix / Windows转换问题?这没有任何区别。

我是否遗漏了一些文件在Windows / IDE / Cygwin堆栈中检入CVS时可能导致此问题的情况?

language-agnostic version-control cygwin cvs file-format
3个回答
3
投票

有些东西正在将DOS换行符(CR LF)转换为Unix换行符对(只是LF)。我个人打赌它是CVS。您可能想尝试使用TortoiseCVS而不是Cygwin CVS。


1
投票

当将文件提交到服务器时,Windwos原生CVS客户端将文本文件(\ r \ n)中的MS-DOS行结尾转换为Unix样式的行结尾,以便在存储库中将文件保存在'规范的形式与\n代表一条线的结尾。当Windows本机客户端还将转换从服务器关闭文件时结束的行。

但是,我认为默认的Cygwin CVS客户端就像一个Unix客户端,并假设不需要行结束转换。因此,如果您使用该客户端签入具有MS-DOS样式结尾的文件(\ r \ n),您将会遇到这种混淆。

看起来使用Cygwin客户端的人正在使用工具来关注将文件转换为MS-DOS样式的行结尾(或者某些东西)。

一个潜在的解决方法是卸载Cygwin CVS客户端并在Windows / Cygwin盒子上安装WinCVS客户端,这样即使Cygwin shell处于活动状态,也会使用Windows本机客户端:

另一种在特定模式下配置你的Cygwin坐骑的可能性(但是我对Cygwin并不是很熟悉,知道它有多好用,或者它是否会引入一些问题 - 自从我尝试使用Cygwin以来已经很久了) :


1
投票

我刚碰到的另一种可能性 - 如果文件以Unicode格式保存但以CVS格式存储为ASCII / Text,则会添加额外的行终止符。

© www.soinside.com 2019 - 2024. All rights reserved.