问题
当使用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下的工具 - >选项中更改值build.compiler.emacs=true
,认为这可能会在签入时导致某种Unix / Windows转换问题?这没什么区别。
当我在文件中检查到导致此问题的Windows / IDE / Cygwin堆栈中的CVS时,我是否遗漏了一些文件?
答案 0 :(得分:3)
有些东西正在将DOS换行符(CR LF)转换为Unix换行符对(只是LF)。我个人打赌它是CVS。您可能想尝试使用TortoiseCVS而不是Cygwin CVS。
答案 1 :(得分: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):
答案 2 :(得分:1)
我遇到的另一种可能性 - 如果文件以Unicode格式保存但以CVS格式存储为ASCII / Text,则会添加额外的行终止符。