我发现最佳做法是让所有文本文件都设置svn:eol-style=native
属性。但是最有效的方法是什么?
我主要在Windows上开发程序(使用TortoiseSVN和svn.exe
命令行),有时为Windows和Linux编写可移植的C / C ++库。为了防止我的源文件中出现令人讨厌的mix-CR,LF问题,我认为svn:eol-style=native
应该是“默认”,但遗憾的是它不是。
我从Subversion红皮书中了解到,在[auto-props]
或~/.subversion/config
中配置%APPDATA%\Subversion\config
会有所帮助,但是,它是按客户端设置的。我团队中的某些开发人员忘记配置这些配置文件(考虑多个虚拟机上的dev)怎么样?即使所有人都记得,如果出现一些新的文本文件扩展名怎么办?如何将此更改正确地传播到我团队中所有dev计算机上的所有配置文件?
所有这些似乎都是一个繁琐的过程。
答案 0 :(得分:22)
我团队中的某些开发人员忘记配置这些配置 文件(考虑多个虚拟机上的dev)?
修复错误。
如果您发现错误签入的文件,则修复起来并不难。 首先,将文件更改为适合您平台的行结束样式。任何编程编辑器都应该能够使用一些内置命令切换样式,或者您可以使用'fromdos'或'todos'类型实用程序。 修复后,设置属性并将其检入:
svn propset svn:eol-style native filename
svn commit filename
我的评论副本:
另一个建议是使用预提交钩子,检查svn:eol风格的设置(和存在)并在需要时修复
答案 1 :(得分:14)
Subversion 1.8方式
因为Subversion 1.8得到repository dictated configuration(RDC),对于强制性,使用所有客户端针对给定存储库的常用设置,可以并且必须配置属性在存储库根目录(或主干)
答案 2 :(得分:7)
这应该是一个快速的答案,而不是“深入细节并自己动手,这里是链接”版本。
我们只是做它,好吗?对于颠覆1.8 +:
$ cd my_checkout_dir
$ svn propset svn:auto-props '
### src
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
*.pch = svn:eol-style=native
*.lua = svn:eol-style=native
*.py = svn:eol-style=native
*.pl = svn:eol-style=native
*.txt = svn:eol-style=native
*.sh = svn:eol-style=native;svn:executable
### ui
*.xib = svn:eol-style=native
*.ui = svn:eol-style=native
*.qrc = svn:eol-style=native
### project
*.pro = svn:eol-style=native
*.pbxproj = svn:eol-style=native
*.json = svn:eol-style=native
*.xcworkspacedata = svn:eol-style=native
*.plist = svn:eol-style=native
' .
$ svn commit -m 'Got really tired of svn:eol-style issues'
请注意最后关闭单引号和点(即当前目录)。根据您的需要调整此列表,将svn propset svn:auto-props '…' .
复制到unix / msys sh-terminal(是的,使用Enters)。提交后,my_checkout_dir
以下的所有文件将在添加时继承相应的属性。 之前添加的文件此操作将不进行修改。正如您在*.sh
及以下所见,您可以通过;
添加更多属性。如果您想更改列表,只需重复所有内容即可。
以下是我的~/.subversion/config
中svn建议的默认值,供参考:
### The format of the entries is:
### file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?'). All entries which match (case-insensitively) will be
### applied to the file. Note that auto-props functionality
### must be enabled, which is typically done by setting the
### 'enable-auto-props' option.
# *.c = svn:eol-style=native
# *.cpp = svn:eol-style=native
# *.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native
# *.dsp = svn:eol-style=CRLF
# *.dsw = svn:eol-style=CRLF
# *.sh = svn:eol-style=native;svn:executable
# *.txt = svn:eol-style=native;svn:keywords=Author Date Id Rev URL;
# *.png = svn:mime-type=image/png
# *.jpg = svn:mime-type=image/jpeg
# Makefile = svn:eol-style=native