Pau*_*ite 9 svn mercurial hgsubversion
作为一名自由职业者,我经常在使用Subversion存储库的公司工作.
如果我可以使用Mercurial从这些存储库获取代码,在我离线时跟踪我的更改,然后在我重新上线时将所有本地更改提交到公司的Subversion服务器,这将非常方便.
这有用吗?你有没有阅读有关细节的任何好的教程?
我在一家使用CVS的公司工作,所以HgSubversion不是一个选择.几天前我遇到了同样的问题,并基于此开发了一个工作流程:
我在我的CVS存储库中创建了一个Mercurial存储库,我将其视为"只读".然后我将这个"readonly"hg repo克隆到工作存储库,在那里我在本地进行更改/修复.我一直在克隆每个功能的repo并修复我的内容,但你也可以只有一个repo,并使用不同的分支策略来管理你的开发.这里是对这些策略的一个很好的概述.
这个工作流程的关键是拥有"只读"存储库.我曾经在我创建的第一个Mercurial存储库中进行更改,这是在CVS之上.这很有效,但从CVS更新时却很混乱.通过使用此附加层,您可以单独处理自己的更改和从CVS更新.
与CVS保持同步
每当CVS发生变化时,我都会进行cvs更新.对于"readonly"hg存储库,这将显示为已修改的文件.要同步Mercurial,我只需要做一个
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存储库中完成的工作.
不可否认,这个工作流程中存在很多不足之处.您可能会在hg中进行多项更改,这只会在CVS/SVN中添加一项更改,因此历史记录不会保留在CVS/SVN中,您必须汇总提交消息.您必须手动管理保持CVS和"只读"存储库同步.这样做的好处是您不需要安装任何其他扩展 - 您只是从两个角度处理文件本身.发生的一切都非常透明,在您的控制之下.
我仍然在削减我的牙齿,但到目前为止,这个工作流程已经相当不错.
Harvey提供了一个很好的图表,并提出了一个很好的观点,即此工作流程适用于任何其他VCS:
alt text http://sr105.com/other_vcs_to_hg_workflow.png
尝试HgSubversion.它允许你做到这一点.您可以将(部分)svn存储库本地克隆到hg存储库,并在本地和远程svn中使用hg(按下并执行您期望的操作).
我过去曾经使用它取得了一些成功,但没有丰富的经验.
| 归档时间: | 
 | 
| 查看次数: | 2145 次 | 
| 最近记录: |