svn最好的方法是什么:默认情况下eol-style = native为文本文件?

时间:2011-11-06 02:03:03

标签: svn

我发现最佳做法是让所有文本文件都设置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计算机上的所有配置文件?

所有这些似乎都是一个繁琐的过程。

3 个答案:

答案 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