作为一名自由职业者,我经常在使用Subversion存储库的公司工作。如果我能够使用Mercurial从这些存储库中获取代码,在离线时跟踪我的更改,然后在重新联网时将所有本地更改提交到公司的Subversion服务器上,那将非常方便。这种方法可行吗?你有没有阅读过任何关于具体操作的好教程?
我在一家使用CVS的公司工作,所以HgSubversion不是一个选择。几天前我也有同样的问题,并基于此开发了一个工作流程:
我创建了一个 Mercurial 仓库,它位于我的 CVS 仓库旁边,我将其视为“只读”。然后,我将此“只读”hg repo 克隆到工作仓库中,在那里进行本地更改/修复。我一直在为我所做的每个功能和修复克隆存储库,但您也可以只有一个存储库,并使用不同的分支策略来管理开发。这里是这些策略的良好概述。hg ci -m "Updated from CVS."
(因此,在我的hg日志中,您会看到很多这样的消息)。此时,我的“readonly”存储库已与CVS同步。现在,我可以转到任何一个克隆的存储库,并发出hg pull
,然后hg update
以将它们同步。
将更改从hg提交回CVS
相反地,当我想要提交到CVS时,我将进入其中一个我已经将更改提交到hg的工作存储库。然后,我将我的更改hg push
回“readonly”,跳到“readonly”存储库,执行hg update
。从CVS的角度来看,这将显示为新修改。然后我会使用cvs commit
将其提交回CVS。在此处,我必须在我的日志消息中重复/总结我在hg存储库中完成的工作。