【问题标题】:Is there anyway to get TortoiseSVN to leave EOL (line endings) as is?有没有办法让 TortoiseSVN 保持原样离开 EOL(行尾)?
【发布时间】:2012-07-20 05:30:18
【问题描述】:

我正在检查具有 Linux 样式行结尾(仅 LF 字符)的文件。当我在 Windows 中使用 TortoiseSVN 签出文件时,它会将行尾转换为 Windows 样式 (CR+LF)。我尝试将这些行添加到 subversion 配置文件以强制它使用 LF,是的,我确实设置了 enable-auto-props = yes。这不起作用,即使它起作用,也不是我想要的,因为我宁愿让 TSVN 根本不接触文件。照原样复制它们。

【问题讨论】:

    标签: svn tortoisesvn newline eol lf


    【解决方案1】:

    正如其他人指出的那样,您需要设置 svn:eol-style 属性。该属性可以有三个值:

    • LF:结账和提交时自动将行尾设置为 Unix 行尾。
    • CRLF:在签出和提交时自动将行尾设置为 Windows 行尾。
    • native:这将在提交到 Unix 行尾 (LF) 时存储行尾,但会根据客户端以 LFCRLF 检出行尾。

    您可以在 $HOME/.subversion/config 文件中设置 auto-props 设置,以自动将此属性附加到所有新文件。但是,这是每个用户必须在其 Subversion 客户端中设置的内容。要强制设置此属性,您可以使用我的pre-commit hook,如果您指定的文件没有将您指定的属性设置为正确的值,它将拒绝提交。

    这是一个粗鲁的大棒,因为它不会纠正问题,但在一两次提交失败后,开发人员会迅速设置他们的 auto-props 以自动添加所需的属性。


    对于 Windows 上的 TortoiseSVN,在您的用户名/AppData(隐藏文件夹)下找到配置文件。例如

    %appdata%\roaming\subversion\config

    添加这些行(可能已经存在,但已注释掉),然后注销/登录:

    enable-auto-props = yes
    # Add these for each text file type that you use:
    *.txt = svn:eol-style=native
    *.cs = svn:eol-style=native
    *.xml = svn:eol-style=native
    

    (示例是带有 XML 的 C#;替换为您使用的任何文本文件。)

    【讨论】:

    • 为了澄清关于设置 svn:eol-style 的声明:正如 A.H. 在他们的回答中指出的那样,对于现有文件,必须为每个文件执行此操作。也就是说,没有“全局”设置会自动更改所有现有存储库文件的设置。相反,每个 文件必须应用该属性,然后提交所有这些文件。有关链接,请参阅 bahrep 的答案。
    • 由于%appdata% 已经表示Roaming 文件夹,因此应该省略该级别的路径。
    【解决方案2】:
    【解决方案3】:

    自动道具配置设置仅适用于文件,不适用于现有文件。对于那些你必须为每个文件设置svn:eol-style 属性。

    【讨论】:

      【解决方案4】:

      从 Tortoise SVN 版本 1.12.0、Build 28568、2019/04/16 开始,您可以将 AS-IS EOL 属性分配给整个文件夹。

      选择工作区:右键单击:TortoiseSVN ->:属性

      选择新的:EOL

      按原样选择(无特定 EOL)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-30
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 2018-02-08
        相关资源
        最近更新 更多