18

一次提交 2447 个文件时,我完全陷入了 SVN 错误。我在 Windows 7 64 位上使用 TortoiseSVN(最新版本)。

事实上,有些文件是在 Mac 上创建的,而另一些是在 PC 上创建的,所以 TortoiseSVN 以一个恼人的Inconsistent line ending style错误停止了提交。

一开始,为了解决这个问题,我在NetBeans中手动打开了被指控的文件,添加了一个空格,将其删除并保存文件,以便 NetBeans 正确转换所有行结束字符,但似乎不仅仅是“一些文件”被指控.

4

8 回答 8

26

在 Windows 7 下,您可以使用Notepad++ v5.6.8 转换 EOL 字符:

菜单编辑EOL 转换Windows / Unix / Mac

于 2013-06-02T11:55:12.083 回答
3

您可以捕获 w,(\w)\n$并将其替换为$1\r\nwhere $1is the character。

用这个正则表达式搜索和替换 NetBeans 就可以了。

我的问题是自定义脚本在这些文件中插入了错误的 EOL 字符(\n而不是\r\n)。

(我用@assylias 的评论回答了我自己的问题。)

于 2013-05-24T11:55:35.037 回答
3

Notepad++中,选择菜单ViewShow SymbolShow End of Line

在搜索框 ( Ctrl+ F) 中,选择正则表达式搜索模式并搜索字符串:

[^\r]\n$

(翻译: \n 前面没有 \r)。

这将直接为您带来问题行,您将在其中看到以 LF 结尾的行,而不是以 CR-LF 对结尾的行。

于 2014-04-21T22:16:31.060 回答
2

如果您的行尾都是有序的,则可能是您的文本文件具有UTF-16 字节顺序标记(BOM)。

您可以使用Notepad++修复该问题。菜单编码转换为 UTF-8

于 2016-02-19T21:10:31.200 回答
1

我在浏览要编辑的存储库时右键单击文件资源管理器打开了项目属性窗口,然后选择:

TortoiseSVNPropertiesNew...EOLAs is (no specific EOL)OK

于 2019-05-24T16:44:58.950 回答
0

在Windows 下的VimgVim中,损坏的文件都显示^M在每一行的末尾。

修复它::s/\r//g删除断开的额外行尾。

于 2015-04-21T07:13:02.657 回答
0

关于Fabian Streitel 的帖子,实际上Vim正则表达式应该:1,$s/\r//g覆盖整个文件。

类 Unix 系统上的另一种方法是使用sed

sed -i '-es/\r//g' <your_file>
于 2015-11-20T09:18:27.030 回答
0

要解决不同行尾的问题,您可以设置 Subversion (SVN) 属性,如下所示:

svn propset svn:eol-style native my_file

虽然这将解决行尾问题并使合并更容易,但这将意味着责备将显示添加 EOL 样式的人作为所有行的更改者,这也意味着您的工作文件最终将被复制到临时文件中进行差异时的文件夹。

之后可以通过以下方式解决责备问题:

svn blame my_file -x "--ignore-space-change --ignore-eol-style"
于 2017-06-15T12:16:14.337 回答