有没有办法让TortoiseSVN保持EOL(行结尾)不变?

24

我正在查看具有Linux风格行结尾(即LF字符)的文件。当我在Windows中使用TortoiseSVN检出文件时,它会将行结尾转换为Windows样式(CR+LF)。我已经尝试将行添加到Subversion配置文件中,以强制其使用LF,而且是的,我确实设置了enable-auto-props = yes。但这并不起作用,即使它起作用了,也不是我想要的,因为我宁愿让TSVN不去碰这些文件,只是原封不动地复制它们。

4个回答

26
正如其他人所指出的那样,您需要设置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#;将其替换为您使用的任何文本文件。)


1
为了澄清关于设置svn:eol-style的说明:正如A.H.在他们的答案中指出的那样,对于现有文件,这必须针对每个文件进行。也就是说,没有“全局”设置可以自动更改所有现有存储库文件的设置。相反,每个文件都必须应用该属性,然后提交所有这些文件。请参见bahrep的答案获取链接。 - ToolmakerSteve
1
由于%appdata%已经表示了Roaming文件夹,因此路径的这个级别应该省略。 - O. R. Mapper


3

auto-props配置设置仅适用于文件,而不适用于现有文件。对于这些文件,您必须为每个文件设置svn:eol-style属性。


1
自Tortoise SVN版本1.12.0,Build 28568,2019/04/16起,您可以将AS-IS EOL属性分配给整个文件夹。
选择工作区:右键单击:TortoiseSVN->属性。
选择新的:EOL。
选择As is(没有特定的EOL)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接