【问题标题】:Problems with WinSCP with end-of-line style on Ubuntu Linux when using SVN Diff使用 SVN Diff 时,Ubuntu Linux 上带有行尾样式的 WinSCP 问题
【发布时间】:2010-12-30 08:32:29
【问题描述】:

我的文件位于远程 Ubuntu Linux 服务器上。当我下载文件并在 WinSCP 文本编辑器或 Notepad++ 中编辑它时,文件行尾样式更改为 Windows。因此,当我将文件重新保存回 Ubuntu 时,这些行已关闭,并且 SVN Diff 认为每一行都已更改。

仅供参考,我通过双击 WinSCP 中的文件来编辑文件。该程序在编辑器中启动文件。每次保存时,文件都会自动复制回 Linux 服务器。

如何防止出现行尾样式问题?

【问题讨论】:

  • 你的意思是换行符而不是空格吗?您是否有兼容 unix 换行符的编辑器,或者至少,它是否配置为自动检测换行符并采取相应措施?
  • 我不确定它是换行符还是空格。你可能是对的,它可能是换行符。您如何将默认编辑器更改为与换行符兼容的编辑器?我可以使用记事本++。
  • 我尝试将文件更改为在 notepad++ 中使用 unix EOL 字符,但 SVN 差异仍然认为每一行都发生了变化

标签: linux windows svn eof winscp


【解决方案1】:

this thread 有帮助吗?更确切地说,这部分:

由此看来,在我看来您已经强制 WinSCP 使用文本模式传输,这意味着 unix->dos 转换。只需强制二进制模式即可避免转换。

【讨论】:

  • 这对我不起作用。据我所知,它也不适用于线程上的人。
【解决方案2】:

我无法弄清楚为什么会出现空格问题,但我能够弄清楚如何忽略空格。

你可以使用:

svn diff -x'-uw --ignore-eol-style'

这已经足够好了。

【讨论】:

  • 你实际上忽略了行尾,所以你没有解决你原来的问题。
【解决方案3】:

您需要使用 unix 行格式。要进行设置,请转到设置>首选项并选择“新建文档/默认目录”选项卡。在“新建文档”控件中找到“格式”并选择“Unix”。这将确保任何新文档具有正确的格式。我已经将它与远程 linux 服务器一起使用,并且没有发现问题。

通常,将使用临时名称创建返回的文件并将更改写入其中。然后将删除原始文件,并重命名新文件以取而代之。这将使返回的文件成为“新”文档,因此此首选项设置应提供正确的格式。

【讨论】:

    【解决方案4】:

    如果您在 WinSCP 中使用 text/ascii 模式传输,它会在上传时将行尾样式转换回 Unix。

    所以我想问题可能是您的文件最初实际上具有 Windows 行尾样式。在下载时,没有任何变化,但在上传时,它会转换为 Unix 样式。

    要么修复你的文件以使用它应该使用的 Unix 样式(如果是这样的话),要么使用二进制传输模式。

    您不仅需要为 WinSCP 通常配置二进制传输模式(最近版本的 WinSCP 中的默认值是什么),而且您还需要确保首选项选项强制编辑文件的文本传输模式在外部编辑器中 为您的外部编辑器 (Notepad++) 关闭:
    https://winscp.net/eng/docs/ui_editor_preferences

    请注意,此选项不适用于 WinSCP 内部编辑器。使用它,文件总是以 text/ascii 模式传输。

    【讨论】:

      【解决方案5】:

      我使用 Notepand2 和 WinSCP 在 Windows 上编辑文件,服务器在 Linux 上。

      在我的情况下,问题出在 WinSCP 连接本身。

      我在连接前点击了“编辑”,然后点击了“高级”,出现了行尾字符选项。改变它解决了我的问题。

      屏幕上的选项已经是有效的选项。之前只有“LF”。

      【讨论】:

        【解决方案6】:

        可以通过在 WinSCP 中进入外部编辑器的配置来完成对该问题的简单而适当的修复

        在:View > Preferences > Editors

        选择您的外部编辑器并点击Edit ...

        然后,取消选中:Force text transfer mode for files edited in external editor

        【讨论】:

          【解决方案7】:

          这是对 Djidiouf 答案的补充。

          1. 转到 WinSCP(ver.5.17.9) Options->Preferences->Editors
            取消选中Force test transfer mode for files edited in external editor

          2. 转到Session->Advanced->Environment->End-of-line characters
            选择LF

          3. 尝试从服务器拉取文件,验证其 EOL 样式

          【讨论】:

            猜你喜欢
            • 2010-10-25
            • 2012-10-04
            • 1970-01-01
            • 2021-02-16
            • 1970-01-01
            • 1970-01-01
            • 2012-01-23
            • 2012-06-22
            • 1970-01-01
            相关资源
            最近更新 更多