|
此文章由 windix 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 windix 所有!转贴必须注明作者、出处和本声明,并保持内容完整
GaryYang, 很同意你的观点, 成事在人, 但是VSS实在是太垃圾了, 就是神仙也没辙. 我承认我用的不精, 在我用VSS的时候, 都从来没体会到version control的作用. 类似于像要跳回去修改以前的bug这样的最基本功能, 都从来也没成功过.
不过我倒是愿意聊聊我加入现在的公司之后的一些体会.
我刚加入现在的公司时使用的是CVS (大概一年半以前), 当时我还在想怎么用这么老的东西. 但是在管理得当的情况下, 用着也没什么问题. (头痛的地方大概在manager做merge/branching的时候吧, 做为developer没啥头痛的). 我记得当时从用户的角度遇到的问题就是在做release的时候, 需要冻结check-in. 而且在同时做几个issue的时候, 也不是很方便转换. 只能把其中一个工作到一半的生成patch, 跳到另一个, 完成后再patch回来这样的.
后面大概几个月后, 全线改用mercurial (hg). 对我们来说, 带来的最大好处就是可以在本地开多个branch, 很方便在多个issue之间跳转. 而且tortoisehg这个GUI也很给力. 你做的改动随时可以commit到本地, 防止丢失. 等到完成之后, 通过review, 再push到远程repo中. 而且所有的历史都在本地, 查看历史, 做annotation这些都很快.
我在家做ruby开发的时候用git, 和hg对比起来觉得基本差不多, 常用的这些功能都能找到对应的. 但是当时公司决定用hg主要是觉得hg的命令更直觉化, 更规范吧.
转变大概在后来当我也接手要做一些merging的工作的时候. 我们对每个客户都同时使用三个repo: dev / test / releases, 经常需要在三个repo直接做一些merge. 用hg做这些工作很轻松, 只要是你熟悉了three-way merging的原理. git和hg的实现原理也决定了merging/branching都是轻量级的. 而且现在也不再需要冻结branch了, 直接通过tag找到release的点, 也很方便. 甚至连类似cherry-picking指定的changesets来release这样的工作都很轻松(比如最后一些issue直到最后也没通过客户的测试, 但是已经很早就check-in到dev repo中).
最近我们开始使用最新的tortoisehg 2.0版本了, 并且开始学习一些"高级"用法, 比如patch queue. 我前面提到的你可以随时将改动commit到本地, 但是这样submit的结果可能会比较乱, 包含多个changesets, 对之后查历史稍许有些影响. 用patch queue, 可以将这些local commit压缩成一个changeset提交.
DCVS是一个趋势, 而且用过之后就离不开了. 像git, 本身就是一个文件系统, 不光做版本控制, 还可以有很多其他的用途. 我现在就用git来做wiki系统用存放日常笔记. git和hg都各有一个好用的免费存储空间, github.com 和 bitbucket.com, 想尝试的可以从他们入手. |
评分
-
查看全部评分
|