我应该如何解决“svn:不一致的行结束风格”?

时间:2009-05-27 18:51:14

标签: svn line-endings

当我运行“svn propedit svn:ignore。”在我的svn存储库的根目录,我收到此错误: svn:行结束样式不一致

我试过运行这个脚本:http://blog.eflow.org/archives/130运行dos2unix并在所有文件上设置eol样式,但是这个问题仍然存在。知道什么可能是错的吗?

20 个答案:

答案 0 :(得分:40)

就我而言,在文件上设置了svn:eol-style属性。 并且“文件的某些行由UNIX行结尾(LF字符)分隔,而其他行由DOS样式的行结尾(CR + LF字符)分隔”。 Here是对此问题的另一个详细讨论 Notepad++中的"Edit"->"EOL Conversion"->"Windows format"为我解决了这个问题。

答案 1 :(得分:25)

在我的情况下,我在Windows中进行编辑。 修复:

  1. 在Notepad ++中打开文件
  2. 将行结尾转换为Unix(编辑菜单 - > EOL转换 - > Unix)
  3. 保存
  4. 将行结尾转换为Windows(编辑菜单 - > EOL转换 - > Windows)
  5. 保存
  6. 这样做了。

答案 2 :(得分:17)

Subversion不是抱怨任何文件的内容,而是关于svn:ignore属性的内容。解决此问题的一种方法是简单地使用svn:ignore删除svn propdel属性,然后重新创建它。

如果svn:ignore中有很多行,可能会更容易的另一种方式:

  1. 在a中获取svn:ignore的值 像这样的临时文件:

    svn propget svn:ignore . > temp

  2. 修复temp中的行结尾 文件
  3. 从固定文件中设置svn:ignore的值 这样:

    svn propset svn:ignore -F temp .

答案 3 :(得分:8)

正在运行

unix2dos [file]

通过cygwin为我解决了这个问题。

答案 4 :(得分:4)

我的问题是我在Visual Studio.NET中得到了这个。为了修复它,我将文件的所有文本复制到记事本中并将其从记事本保存到“xxx.aspx”或任何正确的文件名。然后在Visual Studio中,我被提示重新加载一个已更改的文件,并且瞧 - 一个对话框询问我是否要规范我的行结尾。问题解决了。

答案 5 :(得分:3)

如果只发生一个或两个文件,您也可以打开文件,将内容复制并粘贴到新文件(使用普通文本编辑器),然后保存。然后可以添加此文件(重命名或移动以使其成为正确的名称)。

答案 6 :(得分:1)

我收到了这个错误,但它最终成了一个文件,错过了最后一个谎言(不完整的最后一行)。

通过在VI中打开文件并保存它来解决此问题。

答案 7 :(得分:1)

vi没有向我显示坏行,所以我从评论部分删除了行尾,读取它们(直到END)并保存文件。它之后起作用了。

注意:在调整之前备份你的revprop文件。如果你去草坪,不回去

答案 8 :(得分:1)

脚本是否肯定触及了每个文本文件(假设您安装了dos2unix,否则这就是原因......)?

我能想到的其他事情是检查所有文件是否正确设置了mime类型(你没有一个二进制文件以某种方式标记为签入的文本文件,偶然吗?)。

也就是说,如果您处于多操作系统环境中,我认为将svn:eol-style设置为CRLF并不是一个好主意,如上面的博客文章中描述的如果您正在共享在OS之间编辑文本文件。因为如果你这样做,那么在Windows中看起来很好的文件中充斥着Unix中的控制字符。最好使用'native'作为EOL风格。

答案 9 :(得分:0)

对于mac osx,我得到了一个文件的错误,并且必须使用dos2mac然后使用mac2unix进行转换。一旦我这样做,就解决了线路结尾抱怨的问题。

答案 10 :(得分:0)

正如上面的“ Marius Matioc”所建议的那样,将轻松快速地进行修复 1.在记事本++中打开文件 2.编辑菜单-> EOL转换-> Unix 3.保存 4.编辑菜单-> EOL转换-> Windows 5.保存

答案 11 :(得分:0)

在NetBeans中,您可以使用" Show and change line endings"插件。

安装并重新启动NetBeans后,行结束样式显示在状态栏的右侧。您可以单击它并选择要将文件转换为的结尾。

NetBeans Show and change line endings plugin

答案 12 :(得分:0)

在我的情况下发生错误是因为文件具有编码“UCS-2 LE BOM”。使用ANSI的文件是可以的。我检查了行结尾,在所有文件中它们都是正确的。 似乎(至少在我的SVN版本中)宽字符文件有时无法正确识别。

最简单的解决方案是删除“svn:eol-style”属性。

答案 13 :(得分:0)

我在emacs中尝试svn propset eol-style:native一个PHP文件时收到了同样的错误消息,所以希望这可以帮助那些达到这个问题的人。

我有类似以下内容:

str_replace('</li>^M<br>', '</li>', $text);

^M是单个字符(回车的转义符转义)。

修复方法是将该行更改为等效行:

str_replace("</li>\r<br>", '</li>', $text);

请注意双引号而不是单引号!

答案 14 :(得分:0)

我在之前运作良好的档案中遇到了同样的问题。在记事本++中,我选择将格式转换为UTF-8。这对我有用。

答案 15 :(得分:0)

在Windows机器上通过ant任务运行javadoc时遇到了同样的问题。

我通过在javadoc ant任务下添加<fixcrlf srcdir="${dir.javadoc}" eol="dos"/>来修复它。

答案 16 :(得分:0)

使用perl(1)始终将Windows转换为UNIX行结尾:

perl -p -i.bak -e 's#\r\n#\n#go' my-file.txt

要从UNIX转换回Windows:

perl -p -i.bak -e 's#\n#\r\n#go' my-file.txt

答案 17 :(得分:0)

在对几个文本文件进行一些修改后,我发生了这样的问题,即只添加了\n来分隔某些行,而通常\r\n终止每一行。所以,修复是使用Notepad ++ 找到([^\r])\n 并替换为$1\r\n。 这样,行尾字符在任何地方都是一致的。

答案 18 :(得分:0)

这让我困扰了很长时间,在SVN工作了一个多系统团队。 我制作了这个有用的应用程序,它导航一个文件夹,其中包含查找文本文件的子文件夹,并将所有UNIX EOL转换为DOS EOL。 它是一个AIR应用程序,适用于Windows和Mac。 希望它有所帮助

http://www.pippoflash.com/index.php/2012/06/11/svn-error-inconsistent-line-ending-style-nightmare-solved-download-app/

菲利普

答案 19 :(得分:0)

如果你在执行propedit时得到它,那么在我看来SVN正在抱怨你用于属性的文本文件的格式!

你在哪个操作系统?您使用哪种编辑器进行加速?如果propedit命令仍然启动编辑器,我将使用此编辑器检查哪些行结尾(vi执行此IIRC)。