我的文件位于远程 Ubuntu Linux 服务器上。当我下载文件并在 WinSCP 文本编辑器或 Notepad++ 中编辑它时,文件行尾样式更改为 Windows。因此,当我将文件重新保存回 Ubuntu 时,这些行已关闭,并且 SVN Diff 认为每一行都已更改。
仅供参考,我通过双击 WinSCP 中的文件来编辑文件。该程序在编辑器中启动文件。每次保存时,文件都会自动复制回 Linux 服务器。
如何防止行尾样式问题?
这个线程有帮助吗?更确切地说,这部分:
由此看来,在我看来,您已经强制 WinSCP 使用文本模式传输,这意味着 unix->dos 转换。只需强制二进制模式以避免转换。
我无法弄清楚为什么会出现空格问题,但我能够弄清楚如何忽略空格。
您可以使用:
svn diff -x'-uw --ignore-eol-style'
这工作得很好。
您需要使用 unix 行格式。要设置它,请转到设置>首选项并选择“新建文档/默认目录”选项卡。在“新建文档”控件中找到“格式”并选择“Unix”。这将确保任何新文档具有正确的格式。我已经将它与远程 linux 服务器一起使用,并且没有发现问题。
通常,将使用临时名称创建返回的文件并将更改写入其中。然后将删除原始文件,并重命名新文件以取而代之。这将使返回的文件成为“新”文档,因此此首选项设置应提供正确的格式。
可以通过进入 WinSCP 中的外部编辑器的配置来完成对该问题的简单而适当的修复
在:View > Preferences > Editors
选择您的外部编辑器并单击Edit ...
然后,取消选中:Force text transfer mode for files edited in external editor
如果您在 WinSCP 中使用 text/ascii 模式传输,它会在上传时将行尾样式转换回 Unix。
所以我猜问题可能是您的文件最初实际上具有 Windows 行尾样式。在下载时,没有任何变化,但在上传时,它会转换为 Unix 风格。
要么修复你的文件以使用它应该使用的 Unix 样式(如果是这样的话),要么使用二进制传输模式。
通常,您不仅需要为 WinSCP 配置二进制传输模式(最近版本的 WinSCP 中的默认值是什么),而且您还需要确保首选项选项强制在外部编辑器中编辑的文件的文本传输模式为您的外部编辑器(记事本++)已关闭:
https ://winscp.net/eng/docs/ui_editor_preferences
请注意,此选项不适用于 WinSCP 内部编辑器。使用它,文件总是以文本/ASCII 模式传输。
我使用 Notepand2 和 WinSCP 在 Windows 上编辑文件,服务器在 Linux 上。
就我而言,问题出在 WinSCP 连接本身。
我在连接之前单击“编辑”,然后单击“高级”,有行尾字符选项。改变它解决了我的问题。
屏幕上的选项已经是有效的选项。之前只有“LF”。