如何在SVN中实现预提交的挂接脚本,该脚本调用dos2unix来验证签入的文件

时间:2020-03-05 18:49:00  来源:igfitidea点击:

我想知道这里是否有人有编写这种脚本的经验,是否可以给我一些指导。

我想修改此脚本以验证签入文件没有EOL格式的回车符。 EOL格式在Windows中为CR LF,在Unix中为LF。用户使用Windows格式签入代码时。它不再在Unix中编译。我知道可以在客户端完成此操作,但是我需要在服务器端完成此验证。为此,我需要执行以下操作:

1)确保我检查的文件不是二进制文件,我不知道如何使用svnlook执行此操作,是否应该检查文件的mime:type? 《红皮书》并没有明确指出这一点,否则我一定没看过。

2)我想运行dos2unix命令来验证文件是否具有正确的EOL格式。我会将dos2unix命令的输出与原始文件进行比较。如果两者之间存在差异,我会向客户端发送错误消息并取消签入。

我希望我们对此方法发表评论/反馈。

解决方案

回答

我们到底想做什么?

当然,有很多地方可以学习svn提交前的钩子(例如,在这里,在这里和在红皮书中),但这取决于我们要执行的操作以及系统上的可用功能。

你可以说得更详细点吗?

回答

我认为我们可以通过使用SVNBook中所述的svn:eol-style属性来避免提交钩子脚本:

  • 行尾字符序列
  • 颠覆属性

这样,SVN可以为我们担心行尾。

祝你好运!