将一个Mercurial仓库镜像到Subversion中?

6

我正在使用Mercurial开发一个客户项目。在我工作了两周之后,客户现在要求我将所有代码保存在他们的SVN仓库中。

我想继续使用Mercurial进行开发,但为了让客户满意,我希望将所有提交(包括消息)也导出到SVN中。

这个可行吗?

1个回答

3
你可以使用Mercurial作为客户端访问他们的Subversion仓库。
你是否尝试过hgsubversion?这允许你在Mercurial中完整地查看历史记录。
详见:https://www.mercurial-scm.org/wiki/WorkingWithSubversion 它提供了三种与Subversion协同工作的方式。请确保只使用其中一种,不要混用。
  1. 使用hgsubversion
  2. 使用MQ
  3. 转换扩展
[个人经验]
我发现hgsubversion更好,但是在将Subversion仓库转换为Mercurial仓库时可能会出现问题。
# This usually fails for a svn repo with 
# large history or large files in revchanges

hg clone svn+http://.../svn local-hg

# If the above has any issues and dies before converting the repo, use hg pull
hg pull

问题:您已经有一个现有的存储库。
1. 我猜最好的方法是使用上面的方法之一从子版本库创建另一个Mercurial存储库。 2. 从旧存储库中将更改集拉入此新存储库,以获取先前存储库中的所有更改和历史记录。 3. 现在您已准备好提交更改到svn存储库。

那么这个解决方案是否允许我继续使用我的现有 hg 存储库,将更改同步到他们的 SVN 存储库中?更好的是,能否从 SVN 拉取新更改(以防对方也有人在进行更改)?这可行吗? - Jon L.
@Jon L.:是的,您需要使用其中一种方法克隆svn存储库。这将允许您将Mercurial用作子版本的客户端。然后,您需要通过hg pull将此新存储库与旧存储库中的更改同步。然后使用新存储库将更改推送到svn存储库。 - pyfunc
好的...从svn服务器克隆一个空的repo,然后从当前的hg repo中拉取你的更改。 - jkerian
我遇到的一个问题是,使用hgsubversion从SVN首先拉取,然后从现有的hg repo拉取意味着你必须强制拉取,因为这些存储库是不相关的。这也意味着,由于Mercurial无法确定旧存储库中的hg rev 101应该具有rev 100作为父级,因此拉取将从hg带来整个repo。我还没有找到解决这个问题的方法。 - Masterfu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接