Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netbeans &引用;不一致的行尾样式“;噩梦_Netbeans_Svn_Windows 7_Tortoisesvn_Eol - Fatal编程技术网

Netbeans &引用;不一致的行尾样式“;噩梦

Netbeans &引用;不一致的行尾样式“;噩梦,netbeans,svn,windows-7,tortoisesvn,eol,Netbeans,Svn,Windows 7,Tortoisesvn,Eol,在一次提交2447个文件时,我完全陷入了SVN错误。我使用的是64位Windows7上的TortoiseSVN(最新版本) 事实上,一些文件是在Mac上创建的,而另一些文件是在PC上创建的,所以TortoiseSVN以一个恼人的不一致的行尾样式错误停止了提交 一开始,为了解决这个问题,我在中手动打开了被指控的文件,添加了一个空格,删除了它并保存了该文件,这样Netbeans就可以正确地转换所有行尾字符,但似乎不止“一些文件”被指控 当然,我在网上搜索了一个解决方案,但我还没有找到任何适合Wind

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

事实上,一些文件是在Mac上创建的,而另一些文件是在PC上创建的,所以TortoiseSVN以一个恼人的
不一致的行尾样式
错误停止了提交

一开始,为了解决这个问题,我在中手动打开了被指控的文件,添加了一个空格,删除了它并保存了该文件,这样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在一起一段时间后,我完全忘记了这件事!