刚开始代码一般都是自己一个人写,建一个本地的Hg库,等代码到一定程度时,其他人加入开发团队,需要将代码提交到SVN库中以实现与其他人共同开发,实现这个切换的同时又不丢掉之前Hg库的版本历史,方法如下:
-
将Hg库里的源代码提交到SVN库里;
-
从SVN库里checkout代码到A文件夹下;
-
将原来Hg库中的.hg文件夹和.hgignore文件拷贝到A文件夹下;
Hg( Mercurial )能够实现版本库“迁移”的原因是Hg里并不记载版本之间的变化,而是文件的全部内容,所以当版本库(.hg文件夹)被拷贝到另一个位置后,只要文件内容不变,即使其他元信息(如建立、修改时间等)不一样,Hg就认为是同一个文件。
其他方法:
方法1:首先在本地开发,建立hg库,当需要提交时svn库时,用hg的回退版本(update)功能,从hg中挑选出想提交的代码发布到svn中,之后代码开发切换到在svn的checkout版本中。好处:一开始不用规划svn库位置;缺点:各次提交的时间点信息丢失(可以在提交说明里加上原始提交时间);
方法2:首先在svn库中建好文件夹,然后checkout到本地,然后在这个文件夹里建立hg库;
方法3:始终在本地hg库中开发,挑选出一些版本手工提交到svn库中,当其他开发人员修改代码提交svn后,还要更新本地svn代码,然后手工同步到hg代码中。这个方法只要安装TortoiseSVN,Eclipse不需要安装subclipse插件,适合在有自动测试配合的情况下使用;
总结:如果一开始就计划svn/hg双库,最好用方法2;如果一开始没有计划,后来才要纳入svn版本控制,用方法1;方法3太过于繁琐,且手工同步难以杜绝操作失误,不建议使用。