管人管项目 - Git与SVN选型

  • 作者:KK

  • 发表日期:2016.11.07


要点速读

SVN在权限控制上比较有优势,所以我选SVN,因为项目技术有保密需求,代码不能让员人随便获取拷走


正文

以前SVN是大行其道的代码版本管理软件,然而近年兴起了Git,不可否认它的强大之处,但并非它强大所以就完全使用它

作为公司的技术管理人员,无论你我都几乎会在版本管理软件的选型上游离过一阵,站在公司角度,公司当然不希望所有代码随便被员工复制走,能保密的就保密,不必给他获取的就不给他获取

所以我目前所掌握的知识中,SVN是能满足这个需求的,很快我就决定继续使用SVN作为企业的代码版本管理软件了

也许是我没有摸索到Git里的更细的权限管理能力?反正用SVN,我最细粒度可以控制到项目的某个目录和文件是否允许大家获取,这个老司机都清楚


应用效果

我们的项目采用前后分离开发,后端完全不用管前端,前端也完全不用管后端,于是我将服务端代码隔离成一个目录,前端代码隔离成一个目录,然而它们都在同一个SVN仓库上,结构大概如下(我用JSON表达):

{
	frontent : {
		src : '前端源代码目录',
		mock-server : '前端mock服务器读取的模拟数据目录',
		tests : '基于Node的Selenium-Webdriver验收测试用例'
	},
	web : 'web主机目录,frontent src目录构建结果保存到此目录,CSS、JS被压缩混淆,后端无法阅读修改',
	server : '服务端程序目录,比如也包含了单元测试'
}

于是在auth配置上就控制frontent目录为前端可读写

server目录为后端可读写

而web目录则是前端可读写,后端只读

这样后端人员调试界面时既可运行主机指向web目录显示页面并进行操作,但接触不到frontent目录下的前端源代码

而前端接触不到server的后端源代码,只能启动前端构建环境的情况下用mock服务器进行独立开发

最终就是实现了技术上的尽可能保密,后端复制走的代码,其实也动不了前端什么,产品随着时代改进,所复制走的其实并没有可运作性,更没有可修改性了,前端也无法拿这些代码独立跑起项目


另外还将其它项目模块拆分成微服务,其实就是基于SOA架构,调试时默认也是连内网测试的公共微服务,而不是本机获取所有服务端依赖