前言:
- 工作了这些年,工作了三家公司,也用过主流的代码管理平台,比如SVN,git系列(gitlib,gitee),各有优点,我个人比较喜欢SVN,多人协作的代码管理难免会有代码冲突,SVN如果有冲突是具体行的冲突,如果同一个文件,不同行是可以合并的,git如果一个文件冲突,不管你改的是哪行,都会冲突,有一个优点,用svn版本号作为版本号加入到软件,更方便代码和svn版本关联,git版本号是很长的随机数码,不适合作为版本号。
- 现在的公司没有代码管理,代码容易丢失,也无法追溯代码调整的过程。我就以SVN为工具,为公司搭建代码管理平台,也可以保存一些项目资料和发布资料。
注意:注意,svn不是免费的软件,svn服务器的标准程序,有15个用户的限制,这个在人数没有达到限制的时候,根本不会提示你,所以使用前尽量找没有限制的版本,否则当你遇到用户限制的时候,你又有了很多版本的时候就会很尴尬,缴费呢还是缴费呢。
前置说明
硬件:内网服务器,联想台式服务器,带自动备份的。
系统:Windows Server2012 主要我熟悉。
软件:SVN服务器端。VisualSVN-Server-5.1.4-x64.msi我用的是这个版本
原理:
- 在服务器上安装SVN服务器端软件,然后打开软件,创建仓库,创建用户,配置权限,然后分发url,让有相关目录权限的用户安装SVN客户端软件,去checkout相关目录即可。
详细步骤:
-
准备内网服务器,并且联入局域网。
-
安装SVN服务器端软件,window server2012和普通window桌面版本没什么差别,双击进入安装引导,然后改安装路径,然后一路next。
-
打开SVN服务器端软件,创建仓库。
-
创建项目管理员用户,并去仓库里面设置读写权限。
-
项目管理员用户去检出仓库,并提交项目目录框架,方便项目文档查看。
-
根据项目组人员进行用户添加,并在相关的目录里面设置必要的权限,不能把项目目录让任何人可以读写,有些涉密的资料,仅仅对涉密人员开放,比如软件开发,只能看软件源码目录,和相关的pdf资料,硬件开发,只能看到硬件工程和相关资料。
到此,项目svn就算设置好了。可以让相关的人员进行相关路径的检出和提交了。
这里有个问题,svn提交的时候不输入log,也可以提交,但这个不方便管理,我直接见过可以限制提交。
关于提交hook设置完善说明
在server2012里面打开svn管理软件
右击点开属性,点开hook选项卡
选择Pre-commit hook 并点击Edit
在框框里面输入相关指令即可,如果不想再这里做,可以弄成脚本也行。命令不算多,直接输入即可。我这里是限制提交内容数量,不运行空白提交,命令如下,仅供参考
@echo off
set REPOS=%1
set TXN=%2
set SVNLOOK="%VISUALSVN_SERVER%\bin\svnlook.exe"
SET M=
REM 将提交消息中的所有行连接起来
FOR /F "usebackq delims==" %%g IN (`%SVNLOOK% log -t %TXN% %REPOS%`) DO SET M=!M!%%g
REM 确保M已定义
SET M=0%M%
REM 这里的6是我们要求的长度
IF NOT "%M:~6,1%"=="" goto NORMAL_EXIT
:ERROR_TOO_SHORT
echo "提交说明必须至少为6个字符" >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
:NORMAL_EXIT
exit 0
选择ok,选择应用,然后测试
尝试空白提交
空白提交显示失败,并提示提交说明
补充了提交日志,可以看到提交成功,说明生效了。