上手mercurial

     无论是在学校里还是之前在team里的一些开发都是用subversion做版本控制的,习惯于svn up、svn ci……当然也经常挣扎于svn的烦恼中,尤其是来公司干活后。最头痛的是经常会遇到自己coding了好多代码,突然来了一个棘手的bug,虽然改正很轻松,但提交就麻烦了,因为除了修正bug的代码还有我未完工的代码,不能简单的svn ci了~


     最近可能也是因为项目里不稳定的模块太多了,版本库里“不负责”的提交太多,搞得主管跑数据时很头疼,我们修复bug也很抓狂,于是终于下决心不再直接svn到主版本库了,我们都改用mercurial。于是开始了一种新的版本控制工具的学习……


     感觉mercurial与subversion最大的不同在于mercurial平时的提交对象是本地repo(最初是从主repo克隆出来的),而subversion每次提交都是在操作主repo。于是mercurial相对subversion就多了一个push操作,用来操作主repo。mercurial相对subversion有意思之处在于,mercurial可以方便的在本地管理多个开发版本,push想要push的版本,从而保证主repo的“单一而稳定”。


     就拿文章开始的情景举例。当主repo的版本为1, 本机repo版本为2时,发现了一个需要立即修复的bug。一种选择是在我的版本2的基础上修复bug,然后提交产生版本3,并push到主repo上。但是此时我在版本2中添加的代码还没有开发完,不能提交的主repo中去,难道我要舍弃我不完善的代码?这时我可以在本机上先up到版本1,此时所有的代码内容完全不含我新增的代码,可以放心的修复bug,提交成版本3,并且push到主repo上,然后再up回版本2,此时我的代码又回来了!执行一下merge操作可以把刚才的修复和我不完善的代码合并到了一起。


     当然,我也承认,我对mercurial的好感可能也是因为我之前对subversion的不熟悉,哈哈,不管怎样,工作顺心即可!

猜你喜欢

转载自smartzxy.iteye.com/blog/827327