一直以来我都比较在意源码的管理,怎么说也是自己辛苦写的东西,改得又很频繁,没有个好方法好工具管理起来还真是不放心。
最近几年主要是用分布式版本控制工具Mercurial(HG),个人觉得还是挺好用的。今天看到 有人发了一张漫画 ,转帖如下:
所附的文字说明是:
作为一名项目主管,你知道为什么要尽快的抛弃SVN而转向Git(或HG、Bzr等),答案就在这幅漫画里:
当时我就看着面熟,令狐指出这幅画其实是修改版,原版是说程序在编译中。不过这不重要,重点在于漫画表现的是事实:集中化的源码存储管理存在的风险比分布式版本控制要大。
巧的是刚好在几个月前,我们也曾经就源码管理究竟应该是分布式还是集中式有过一次讨论,这里就把那次讨论的大致内容总结一下吧。
就我个人来说,最近几年用HG下来,已经早就完全不想再回去用CVS/SVN之类的东西了。而令狐也很痛苦他们公司所用的源码管理工具是那个最渣(没有之一)的VSS。
但是当我强烈认为分布式版本控制未来将取代集中式版本控制时,令狐却对此表示反对。
他认为关键在于分布式版本控制更适合于开源软件开发:开发人员在地理上分布得较为分散,所有人拥有全部源代码,各自相对独立开发。所以分布式版本控制工具通常都使用WEB或SSH等适合远程连接的方式进行代码获取和提交,有强大的分支管理功能。
但是集中式版本管理更适合于企业软件的团队开发:开发人员本身就集中在同一工作场所,有较多的团队合作需要,开发人员通常不能得到全部代码,需要较为严格的权限管理等。所以还是集中式的源码管理工具更适合。
这的确有道理。
至于像漫画中所说的server down这样的事故根本就不应该在软件公司里发生。对于源码服务器这么重要的设施居然没有具备足够的可靠性和快速的灾难恢复措施,只能说是公司在管理上存在问题需要纠正,而不是集中式源码管理不对。
当然,我还是认为分布式管理工具对于开发人员来说简直就是大杀器,值得强烈推荐。即使你的公司里用的是集中式版本控制,你也可以同时自己使用分布式版本控制工具来作本地的版本管理。二者是可以并存的——我自己就一度HG和SVN并用了一段时间。
不过归根到底还是集中式版本控制工具需要加强一些在分支管理和本地版本管理方面的功能。