版本管理系统的优劣我不想展开了,大家搜索一下就能看到大量这方面的权威讨论和对比,我只想以我的亲身经历,站在系统管理员和一线用户的角度描述一下Git、SVN、P4D这三者对于我们日常研发效率提升的真实感受。
SVN-老而弥坚但值得信赖
时间回到2013年,当我从同事手上接过公司SVN系统管理权的时候,游戏业界正处于从端游往手游转移的前中期,公司的每个项目都有一个独立的SVN(和独立的访问域名),例如/SVN/G1、/SVN/S1等等,每个项目的子目录再按工种来划分工作目录,例如/SVN/G1/Client、/SVN/G1/Server、/SVN/G1/Plan等等。
记忆中那段时间,每天都要花不少的时间来处理SVN的账号新增、密码修改、权限管理等等琐碎的需求,实在不厌其烦,直到后来我用openldap统一了SVN系统的账号管理,并且用PHP写了一个简单的账户自助管理系统,让每个人可以自助申请账号和修改、重置密码,我才算从这个泥潭中拔脚逃了出来。
搞定账户自助后,还需要搞定SVN权限自助,当时想到的办法就是用SVN本身来管理SVN权限,方法也很简单,创建一个独立的SVN库,例如/SVN/Access,然后在下面创建每个项目的控制文件,例如/SVN/Access/G1/authz,每个项目定义PM、主程等至少两个人作为这个权限的管理者和编辑者,这样每个项目的日常权限的增删减就有项目同学自己负责了,只需要再写一个定时任务,把这些一一对应的authz文件同步到每个库的正确位置就大功告成了,成功甩锅。