Netbeans &引用;不一致的行尾样式“;噩梦
在一次提交2447个文件时,我完全陷入了SVN错误。我使用的是64位Windows7上的TortoiseSVN(最新版本) 事实上,一些文件是在Mac上创建的,而另一些文件是在PC上创建的,所以TortoiseSVN以一个恼人的Netbeans &引用;不一致的行尾样式“;噩梦,netbeans,svn,windows-7,tortoisesvn,eol,Netbeans,Svn,Windows 7,Tortoisesvn,Eol,在一次提交2447个文件时,我完全陷入了SVN错误。我使用的是64位Windows7上的TortoiseSVN(最新版本) 事实上,一些文件是在Mac上创建的,而另一些文件是在PC上创建的,所以TortoiseSVN以一个恼人的不一致的行尾样式错误停止了提交 一开始,为了解决这个问题,我在中手动打开了被指控的文件,添加了一个空格,删除了它并保存了该文件,这样Netbeans就可以正确地转换所有行尾字符,但似乎不止“一些文件”被指控 当然,我在网上搜索了一个解决方案,但我还没有找到任何适合Wind
不一致的行尾样式错误停止了提交
一开始,为了解决这个问题,我在中手动打开了被指控的文件,添加了一个空格,删除了它并保存了该文件,这样Netbeans就可以正确地转换所有行尾字符,但似乎不止“一些文件”被指控
当然,我在网上搜索了一个解决方案,但我还没有找到任何适合Windows环境的解决方案
我现在正把头撞在墙上。所以我回答了自己的问题:
您可以捕获w:(\w)\n$
并替换为$1\r\n
,其中$1
是字符
用这个正则表达式搜索并替换Netbeans就可以了
编辑:我的问题是自定义脚本在这些文件中插入了错误的EOL字符(\n
而不是\r\n
)在Windows 7下,您可以使用记事本++v5.6.8
转换EOL
编辑-->下线转换-->Windows/Unix/Mac
在记事本++中,选择“查看->显示符号->显示行尾”
在搜索框(Control-F)中,选择正则表达式搜索模式并搜索字符串:
[^\r]\n$
(翻译:\n前面没有\r)
这将直接为您带来问题行,您将看到该行以LF结尾,而不是在Windows下的Vim或GVim中以CR-LF对结尾,断开的文件都显示在每行末尾
要修复它::s/\r//g
要删除断开的额外行结尾。关于@fabian Stratel的帖子,实际上vim regexp应该是:1,$s/\r//g
,以覆盖整个文件。
*n?x上的另一种方法是使用sed:
sed-i'-es/\r//g'
如果您的行结束符都是有序的,则可能是您的文本文件具有UTF16字节顺序标记(BOM)
你可以用记事本++来解决这个问题。编码->转换为UTF-8。要解决不同行尾的问题,可以按如下方式设置SVN属性:
svn propset svn:eol样式本机my_文件
虽然这将解决行尾问题并使合并更容易,但这将意味着将显示添加eol样式的人员作为所有行的更改者,并且这也意味着在执行差异时,您的工作文件最终将被复制到临时文件夹中
事后可以通过以下方式解决责任问题:
svn责怪我的文件-x”--忽略空间更改--忽略eol样式“我所做的是在浏览我要编辑的repo时右键单击文件浏览器打开项目属性窗口,
然后选择:
TortoiseSVN>Properties>New…>EOL>原样(没有特定的EOL)。
我会尝试在cygwin外壳上使用unix2dos
。编写一个小程序,查找mac风格的终结者,并用windows风格的终结者替换它们?Netbeans用regex查找和替换也可以做到这一点。还可以一次在多个文件中查找和替换,并支持搜索\r
、\n
等。我更喜欢@assylias的解决方案。我创建了一个几乎可以工作的正则表达式:\w\n$
-它选择所有Unix EOL字符,除了它还选择开头的第一个字符(\w
)…您可以捕获w:(\w)\n$
,并替换为$1\r\n
,其中$1是字符。您确定字符组后面的点是正确的吗?AFAICS,此正则表达式选择包含除a以外的任何内容的行,后跟任何内容,后跟\n
。表达式不应该是[^\r]\n$
?谢谢,不应该在那里。此表单为我找到了以\n而不是\r\n结尾的行。Fixedmy NP++与$\r\n
匹配,而不是\r\n$
(将行尾计算为行分隔符前的字符),以防任何人出现问题!出于某种原因,windows调度器将其任务导出到UCS2 LE BOM
编码的xml文件中:|显然,乌龟不太喜欢这样。在转到UTF
后,调度程序仍然能够将它们导入回去,因此这对我有效如果这对您最有效,为什么不将其标记为答案?@SimonSobisch:可能是因为stackoverflow不允许您在48小时后接受自己的答案,大多数人不值得花时间记住,一旦有可能,就回去接受它。@ToolmakerSteve在这种情况下,这是不可能的,因为Epoc确实接受了在他自己的答案发布两周后发布的答案。我只是问,因为他在回答中明确写了“这对我有用”,但将投票最多的答案标记为“这对我有用”。投票最多的答案比我的答案简单得多。不要将答案称为“刚好在上面”。答案是按分数排序的,所以“刚好在上面”的内容可以更改。此外,这应该是对该答案的评论,而不是单独的答案,如果这只是一个更正的话。你应该澄清你的答案,要么把它独立起来,要么把它删除。谢谢你!和GIT在一起一段时间后,我完全忘记了这件事!