在ThoughtWorks,很多同事都和我一样患有“频繁提交沉迷综合症”,具体症状是每隔30分钟就得运行提交命令, 否则就血压升高,眼眶发干,手心出汗,焦虑...等。 可是偏偏有时候提交不了,要想提交还得修改不知道多少个文件,你有点恐惧了,可还得硬着头皮干。
正如当时在场的同事田乐回答的一样:根本问题不是持续集成工具是否应该支持这样的功能,而是团队选择的版本控制工具(譬如SVN, CVS, P4)对频繁提交没有提供良好的支持。
我们团队使用的是分布式版本管理工具Mercurial,它医好了我的“频繁提交沉迷综合症”,我把药方写在这里以厮患者。
首先编辑.hgrc文件(* mac和linux用户运行vi ~/.hgrc),在[extensions]条目下加入hgext.mq打开mq的扩展。
[extensions]
hgext.mq =
保存退出,运行
hg --help
你可以在Console上看到新增了很多queue相关的命令
qapplied
qclone
qcommit
qdelete
qdiff
qfold
等
在mq打开后,如果我们完成了部分修改,可以运行
*hg st (查看本地修改,你应该看到所有被修改过的文件)
*hg qnew -m "[message]" -f "[patch name]" (在queue中压入一条changeset)
*hg st (查看本地修改,现在你应该重新得到了干净的本地目录)
这样在开发的时候我们可以通过hg qnew命令将baby step不断提交,保持一个干净的工作目录。
但是这些changeset是没有提交到主repository上的。在完成了所有的所有的工作后,
我们可以运行
*hg qremove -r qbase:qtip
*hg push
这样,团队中的其他开发人员就可以得到你的修改了。
在我们运行hg qnew后,hg其实帮我们创建了一个标准的patch文件,并把它保存到了
工作目录/.hg/patches
如果你想回家继续开发,可以拷贝走这些patch文件,在另外一台机器上,使用hg qimport或者patch(linux,mac)都可以重建你的工作目录。
如果你有兴趣,请参看mercurial mq的文档
1 条评论:
http://thought-tracker.blogspot.com/2008/07/hg-vs-git-pullmerge-vs-rebase.html
hehe, maybe git is more suitable for what you described
发表评论