2020/09/14

使用SVN管理Tiptop源代码

Tiptop服务器端默认是使用最原始的复制源代码文件加上当天日期后缀的方式来管理源代码版本的,这对于一两个人的小团队可能还可以应付,团队稍微再大一点,就很容易引起版本管理混乱、代码被覆盖等问题。

我的做法是使用SVN来管理,具体到服务器端是VisualSVN Server,客户端是Tortoise SVN (Windows平台)或Rabbit VCS (Linux平台)。

服务器端找了一台Windows服务器,装好VisualSVN Server后,建立代码仓库,导入最新版的toptest上的源代码,建立每个开发者的账号,使其对代码仓库有读写权限,再建立一个只读账号,使其只具有读权限,用于将来同步SVN服务器和toptest服务器的代码。

关于SVN客户端的用法,网上用很多资料,不再赘述,只是RabbitVSC在某些Linux上每次update或commit时都会要求输入用户名、密码,可以参考这个链接 :https://github.com/rabbitvcs/rabbitvcs/issues/270#issuecomment-619424378

具体来说说toptest端的设置。我所在公司的服务器上在出厂时有安装svn,但版本太低,而Redhat一没有购买Subscription,所以无法直接升级到最新版,只能采取“曲线救国”的办法了,用svn checkout命令和刚刚在VisualSVN Server上建立的只读用户将源代码同步到某个新目录,再使用rsync命令将文件同步到/u1/toptest的具体目录中。

我将同步的命令直接写了个脚本,以下供参考:

if [ "$1" = "" ] ; then   #没给参数时报错

   echo " Unknown parameter."

elif [ "$1" = "ALL" ]; then #参数为ALL,则用svn 更新所有文件,再用rsync同步。

   svn up /svn/TOPCUST

   rsync -tgorh --progress /svn/TOPCUST /u1/toptest/topcust/

else #参数为指定文件,则用只更新该文件,再用rsync同步。

   svn up /svn/TOPCUST/$1

   rsync -tgorh --progress /svn/TOPCUST/$1 /u1/toptest/topcust/$1

fi

使用上述脚本时,针对不用Linux用户,第一次可能会询问是否接受证书,请选择“永久接受”,若询问svn的用户名和密码,则录入那个只读的用户信息即可。

建只读用户的目的是为了避免开发人员直接在toptest服务器上更新svn。

在客户端使用Tortoise SVN或Rabbit VCS的好处,还有可以对比历史版本和当前工作版本之间的差异,利于代码审查。

如果你在客户端使用VS Code作为编辑器,还可以使用Cristian Rengifo出品的插件Informix 4GL,它具有语法代码高亮的特点,还能借助VS Code自动完成代码,如果打开4gl是乱码,可以从右下角切换编码,永久解决办法是编辑这个插件的package.json文件,将4GL文件对应的files.encoding由cp437改为UTF-8,重启VS Code即可。

当然VS Code还可以安装svn的插件,这样一个建议的IDE就建好了,个人感觉比Genero Studio用着舒服。

Enjoy it.

没有评论: