“我该如何解决?”;svn:行尾样式不一致;?

“我该如何解决?”;svn:行尾样式不一致;?,svn,line-endings,Svn,Line Endings,当我在svn存储库的根目录下运行“svn propedit svn:ignore”时,会出现以下错误: svn:行尾样式不一致 我尝试运行这个脚本:它运行dos2unix并在所有文件上设置eol样式,但是这个问题仍然存在。你知道会出什么问题吗?脚本是否明确地触及了每个文本文件(假设你安装了dos2unix,否则这就是原因…) 我能想到的另一件事是检查所有文件的mime类型设置是否正确(可能没有一个二进制文件被标记为签入的文本文件?) 这是说,如果你在多操作系统环境中,我认为如果你在OSs之间共享

当我在svn存储库的根目录下运行“svn propedit svn:ignore”时,会出现以下错误: svn:行尾样式不一致


我尝试运行这个脚本:它运行dos2unix并在所有文件上设置eol样式,但是这个问题仍然存在。你知道会出什么问题吗?

脚本是否明确地触及了每个文本文件(假设你安装了dos2unix,否则这就是原因…)

我能想到的另一件事是检查所有文件的mime类型设置是否正确(可能没有一个二进制文件被标记为签入的文本文件?)


这是说,如果你在多操作系统环境中,我认为如果你在OSs之间共享和编辑文本文件,那么在上面的博客文章中描述,将Svn:EOL样式设置为CRLF不是一个好主意。因为如果这样做的话,在Windows中看起来正常的文件在Unix中会充斥着控制字符。最好使用“native”作为EOL样式。

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


你在哪个操作系统上?您使用哪个编辑器进行属性编辑?如果propedit命令仍然激活编辑器,我将使用此编辑器检查其中的行结尾(vi执行此IIRC)。

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

如果您的
svn中有很多行,另一种方法可能会更简单:忽略

  • 获取svn:ignore的值 像这样的临时文件:

    svn
    propget svn:忽略。>温度

  • temp
    文件
  • 设置svn:ignore的值,如 这:

    svn propset svn:ignore-F
    温度


  • 我得到了这个错误,但它最终是一个文件丢失了谎言的最后一个结尾(不完整的最后一行)


    通过在VI中打开文件并保存来更正此问题,解决了此问题。

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

    vi没有显示错误的行,因此我从注释部分删除了行尾,读取它们(直到最后)并保存了文件。在那之后,它起了作用

    注意:在调整revprop文件之前备份它。如果你是草皮,就不要再跑了

    unix2dos [file]
    

    通过cygwin为我修复了此问题。

    在我的情况下,在文件上设置了
    svn:eol style
    属性。 和“文件的某些行由UNIX行结尾(LF字符)分隔,而其他行则由DOS样式的行结尾(CR+LF字符)分隔”。是关于这个问题的另一个详细讨论。

    中的“编辑”->“下线转换”->“Windows格式”
    为我解决了这个问题。

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

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


    Filippo

    对于MacOSX,我在一个文件中遇到了这个错误,必须使用dos2mac和mac2unix进行转换。一旦我这样做了,它就解决了行结尾抱怨的问题。

    在对几个文本文件进行了一些修改后,我出现了这个问题,只添加了
    \n
    来分隔某些行,而通常
    \r\n
    终止每一行。因此,修复方法是使用Notepad++来 查找
    ([^\r])\n
    并替换为
    $1\r\n

    这样,行尾字符在任何地方都是一致的。

    要使用perl(1)将Windows一致地转换为UNIX行尾,请执行以下操作:

    要从UNIX转换回Windows,请执行以下操作:

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

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


    我通过在javadoc ant任务下面添加
    来修复它。

    在我的例子中,我是在Windows中编辑的。 要修复:

  • 在记事本中打开文件++
  • 将行结束转换为Unix(编辑菜单->下线转换->Unix)
  • 拯救
  • 将行尾转换为窗口(编辑菜单->下线转换->窗口)
  • 拯救

  • 这就成功了。

    我在以前运行良好的存档中遇到了同样的问题。在notepad++中,我选择了将格式转换为UTF-8。这对我很有效。

    我在尝试
    svn propset eol style:native
    emacs中的一个PHP文件时收到了相同的错误消息,希望这能帮助解决这个问题的人

    我的想法如下:

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

    注意双引号而不是单引号

    在我的例子中,发生错误是因为文件的编码为“UCS-2 LE BOM”。带有ANSI的文件还可以。我检查了所有文件中的行尾,它们都是正确的。 看起来(至少在我的SVN版本中)宽字符文件有时无法正确识别


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

    在NetBeans中,您可以使用“”插件

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


    正如上文中“马吕斯·马蒂奥克”所说的那样
    str_replace('</li>^M<br>', '</li>', $text);
    
    str_replace("</li>\r<br>", '</li>', $text);