繁体   English   中英

使用 SVN Diff 时,Ubuntu Linux 上带有行尾样式的 WinSCP 问题

[英]Problems with WinSCP with end-of-line style on Ubuntu Linux when using SVN Diff

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

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

如何防止行尾样式问题?

这个线程有帮助吗? 更准确地说,这部分:

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

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

您可以使用:

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

这工作得很好。

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

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

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

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

修复您的文件以使用 Unix 样式(如果是这种情况)或使用二进制传输模式。

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

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

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

就我而言,问题在于 WinSCP 连接本身。

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

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

在此处输入图片说明

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

在: View > Preferences > Editors

选择您的外部编辑器,然后单击Edit ...

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

这是对 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 应该选择LF

  3. 尝试从服务器中提取文件,验证其 EOL 样式记事本++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM