您的位置主页 > SVN配置

svn中如何让标签(tags)只读:commit-access-control.pl

[size=3]从cvs或vss转过来的用户都对svn的标签感觉比较别扭,因为它是可写的,和分支几乎没什么区别。那么如何让一个标签目录变成只读(可以创建新的标签,但不能进行修改)呢?
这可以用svn自带的commit-access-control.pl文件来实现这个功能。这个文件一般在svn安装时放到了某个目录,与svn文档在一起,如/usr/share/doc,(或安装包的:subversion-1.4.6/tools/hook-scripts位置)
1、将commit-access-control.pl和commit-access-control.cfg.example拷贝到项目仓库的hooks/目录下。
2、commit-access-control.cfg.example改名,去掉.example后缀名。
3、在hooks目录中,重命名pre-commmit.tmpl:
bashs$ mv pre-commit.tmpl pre-commit;
4、修改pre-commit文件,将其中的commit-access-control.pl和commit-access-control.cfg在前面加上绝对路径。否则会报错找不到文件commit-access-control.pl。
5、在commit-access-control.cfg文件中配置权限,将:
原来后面的几行都去掉,自己重新写,如下:

[Make everything read-write for all users]
match = .*
access = read-write

[However, we don't let tags writalbe]
match = tags/
access = read-only

6、手工运行commit-access-control.pl测试脚本是否好使。
7、启用脚本。将pre-commit文件赋予可执行权限:
bashs$ chmod +x pre-commit;

这时就可以使用了。

手工运行commit-access-control.pl时,
可能会报错:Can't locate Config/IniFiles.pm in @INC ....../commit-access-control.pl line 40云云
这是因为你的perl缺少了一个模块Config::IniFiles,运行如下命令进行安装:
perl -MCPAN -e 'install Config::IniFiles'
如果这个报错、安装不上的话,可能是你没有配置好span,按照下面操作:
运行:
perl -MCPAN -eshell
一路回车。选择span镜像时需要输入有效的url,一个是默认的那个,另一个可以输入[/size][size=3][color=#0000ff]http://cpan.linuxforum.net[/color][/size][size=3]。
然后运行:
install Bundle::CPAN
再运行:
install Config::IniFiles
这时就安装好Config::IniFiles组件了。[/size]