基于svn的版本控制,服务器管理员重点解决两个问题:(1)如何通过一个svn服务器进程,管理多个svn项目,而这些svn项目也需要有各自独立的账号密码和权限控制。(2)如何像git一样,提交代码(commit)的时候,强制要求客户端写注释。
关于svn和git的对比,本文不展开讨论,基于svn的版本控制,服务器管理员新建一个svn项目,设置账号密码等权限,属于初级操作,网上也有很多资料可以查询,这里重点解决两个问题:
(1)如何通过一个svn服务器进程,管理多个svn项目,而这些svn项目也需要有各自独立的账号密码和权限控制。
(2)如何像git一样,提交代码(commit)的时候,强制要求客户端写注释。
下文是针对解决这两个问题的操作记录和踩坑纪实,希望对svn管理员有所帮助。
设置SVN子项目
我们搭建的SVN服务器,需要处理多个不同的项目,而每个项目又需要独立的账号密码和权限管理,需要设置SVN子项目。
1、创建SVN版本服务器项目
新建一个目录,例如yanyubao.cn,进入目录中,点击鼠标右键,通过TortoiseSVN,选择“”,一个SVN项目的服务器端就创建了。
2、SVN的项目目录结构
创建成功的提示中,直接点击“OK”,不建议使用“Create folder structure”,因为创建的目录结构既复杂又没有实际用处。
3、修改SVN服务器的设置项
这个时候的项目不具有子项目属性,我们需要修改文件“conf/svnserve.conf”,修改权限验证以及“realm”选项的值,如下图所示。
4、设置账号密码和子目录权限
分别在passwd和authz两个文件中设置账号密码和子目录权限,这两个配置文件中有设置的示例,可直接参考使用,这里不再赘述。
/conf/passwd
/conf/authz
5、启动SVN版本服务器
这是最后一个步骤,也是最重要的,建议通过以下命令启动:
"C:\Program Files\TortoiseSVN\bin\svnserve" -d -r E:\Temp\SVN_Server\
这样启动的服务,使用的是默认端口3690。实际生产环境中,我们处于安全考虑,不会开放这个默认端口,所以可以通过选项“--listen-port”将服务器设置为其他端口,例如:
"C:\Program Files\TortoiseSVN\bin\svnserve" -d -r E:\Temp\SVN_Server\ --listen-port 3691
特别提示:这里使用的目录为“E:\Temp\SVN_Server\”,在这个目录下,跟“yanyubao.cn”同级的目录下,可以创建更多的SVN子项目,而每个子项目中,我们可以通过“conf/authz”再分别设置不同子目录的权限。
6、客户端的请求
以上服务启动后,客户端请求时候的网址需要注意路径的拼写,我们以本地的SVN服务为例(即服务器和客户端在同一台电脑上),以上搭建的SVN服务,我们需要checkout等操作的时候,请求路径为:
svn://127.0.0.1:3691/yanyubao.cn
其中的子目录为“yanyubao.cn”是一定要加上的,如果不加上,会找不到对应的路径,因为根目录下没有项目。
如果项目下还有其他的子目录,例如test001,则完整的路径为:
svn://127.0.0.1:3691/yanyubao.cn/test001
提交代码(commit)的时候要求强制写注释
1、创建新文件pre-commit.bat
在SVN项目的hooks目录下,找到文件pre-commit.tmpl,改成其他名称,比如:pre-commit----.tmpl
复制刚才改名的文件,设置新文件名称为“pre-commit.bat”。
2、设置pre-commit.bat文件内容
复制以下内容到pre-commit.bat文件中并保存。
@echo off
rem SVNLOOK 为 svnlook.exe 在 VisualSVN Server 安装目录\bin 中的路径
set SVNLOOK="C:\Program Files\TortoiseSVN\bin\svnlook.exe"
setlocal
set REPOS=%1
set TXN=%2
rem "....." 代表5个字符(1个 . 代表1个字符)
%SVNLOOK% log "%REPOS%" -t "%TXN%" | findstr "....." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 提交失败!请添加注释(注释内容不能少于5个字符)之后重新提交! 1>&2
exit 1
3、修改pre-commit.bat权限
在Windows的文件管理器中,查看文件属性,给文件“pre-commit.bat”设置可执行权限。
正常情况下,不需要重启SVN,即可立即生效。
4、在SVN客户端验证设置是否生效
直接提交修改的代码,不写注释,会看到红色的错误提示。
2023年07月01日 5:52 下午 沙发
6