SVN提交钩子来强制执行编码&行结束?

时间:2011-07-04 11:03:42

标签: visual-studio-2008 svn character-encoding

VC ++存在一个已知问题,它似乎使用您的系统本地化设置来选择默认文件编码。 我想知道如何在提交文件时让SVN强制执行某种编码和行尾类型。

2 个答案:

答案 0 :(得分:1)

您需要设置svn:eol-style属性,但是您需要对所有文件执行此操作,因此您需要确保开发人员在创建新文件时使用它。而且,我恰好有Subversion Kitchen Sink Pre-Commit Hook来处理这个问题。这个钩子在Perl中,几乎在所有平台上都可用。我试图写钩子不需要任何非标准的Perl模块,所以你要做的就是在Subversion服务器上安装Perl。

钩子做很多事情(因此 Kitchen Sink 指定)。它可以阻止用户进行提交,除非他们有权限,它可以防止你的标签被修改,它可以防止添加某些文件名,并且对你来说,它可以检查以确保安装了特定的Subversion属性,并且设置为正确的值。

基本上,如果有人创建新文件(或修改旧文件)并且未在该文件上设置该属性,则会阻止用户提交该文件。失败提交的错误解释了问题和解决方案。

要避免此问题,用户可以将其autoproperties设置为在创建新文件时自动添加属性。不幸的是,这是一个逐个用户的设置,因此您无法强制用户执行此操作。然而,在他们第一次或两次反对这个钩子后,他们将设置他们的autoproperties。

答案 1 :(得分:0)

查看svn:eol-style属性。此属性设置文件的行结束类型。 实施编码并不可行:这需要转换(即更改)您的文件内容,而无需先检查转换。