【发布时间】:2010-07-14 21:55:50
【问题描述】:
问题
经常(但不是每次)在使用 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 完成签入和签出。
- 操作系统:Widows XP Professional。
我的尝试
我尝试在工具->选项下的 NetBeans 中更改值:build.compiler.emacs=true,认为这可能会在签入时导致某种 Unix/Windows 转换问题?这没什么区别。
当文件在 Windows/IDE/Cygwin 堆栈中检入 CVS 时,我是否遗漏了一些可能导致此问题的文件?
【问题讨论】:
-
我在使用 FTP 上传 C 文件时遇到过这种情况,我使用二进制而不是 ASCII 进行上传 - 在您的情况下这是一个可配置的选项吗?
-
看起来是行结尾。 Windows 做 \r\n 而 unix 只做一个(通常)。因此,unix 正在将一个 Windows Line 结尾转换为 2。也就是说,不知道该过程的哪一部分正在执行此操作。您可以在 Windows 中使用 notepad++ 转换行尾,并使用十六进制编辑器查看它们(NPP 有一个插件十六进制编辑器)。
-
标准 Unix 行结束符为 '\n';标准的 Windows 行结束字符是 '\r' 后跟 '\n'。如果一切都在 C 中的文本模式下处理(并且 CVS 是用 C 编写的),这并不重要。如果文本文件以二进制模式处理,并且同时存在 Unix 和 Windows 组件,则可能会出现问题。
标签: language-agnostic version-control cygwin cvs file-format