我在Unix服务器上安装了SVN。我想在SVN中实现一个接受某种文件类型的策略,然后会出现一条错误消息提醒用户。我得到了一些线索,它可以在预提交钩子脚本中完成,但我不知道如何?我可以知道如何做到这一点吗?
答案 0 :(得分:4)
预提交脚本是一个脚本,存储在svn存储库的根位置下的hooks目录中(服务器使用的位置,而不是您签出的位置)。它可以是任何可以作为可执行文件运行的脚本 - 例如perl,python或bash脚本,具有正确的#!
行并设置为可执行文件。
每次有人尝试提交时,提交都将存储为未提交的事务,然后将使用两个参数调用脚本 - repo的路径和事务的名称。然后,该脚本可以使用svnlook
或svn log
等svn实用程序(通常使用选项-t NAME_OF_TRANSACTION
)来获取有关事务的信息,并确定它是否有效。
它产生两个重要的输出。首先,退出代码将影响事务是否继续。除0之外的任何内容都将取消交易。因此,例如在perl脚本中,您将进行一些测试以确定文件名是否有效,然后执行exit(-1)
(如果不是)。其次,如果交易被拒绝,将向用户显示写入stderr
的任何内容,以向他们解释为什么他们的提交没有通过。因此,在退出非零代码之前,您应该打印至少类似的内容:
print STDERR "Files with extension *.exe cannot be added to version control";
尝试执行提交,然后查看不同的svn工具以获取有关该提交的信息,您应该能够弄清楚脚本应该如何工作。当您知道成功提交的修订号时,使用命令行参数-r 555566
应该与在脚本中使用-t NAME
相同,当NAME是作为脚本参数传入的值时。