如何克隆hgsubversion存储库并保留Subversion修订信息



我遇到的情况似乎很独特。我需要一个中央Mercurial存储库,它可以从Subversion服务器中提取,并且它的克隆也可以从同一个Subversion服务器提取更新。更新将与通过Mercurial提交的更改一起提交到Mercurial存储库。

现在,hgsubversion一开始似乎运行良好,克隆了Subversion存储库,允许我通过Mercurial提交更改,并正确地从Subversion存储中提取更新。然而,当我克隆hgsubversion存储库时,尽管它已经在存储库中,但克隆会尝试重新拉取整个Subversion存储库。

有办法解决这个问题吗?有更好的方法来设置吗?

作为参考,我目前的设置是存储在Mercurial存储库中的Subversion存储库。Mercurial commits还提交.svn文件夹,因此任何克隆存储库的人都可以简单地在该文件夹上运行svn Cleanup,然后运行svn Update以从Subversion服务器获取最新文件。然后,他们运行hg-Commit,然后将文件推送到中央Mercurial存储库。这样做效果不错,但我更愿意找到更好的解决方案。

注意:我不需要将更改推回到Subversion服务器。我只需要拉零钱。

中央服务器(甚至在Mercurial中)是中央服务器。如果它克隆了Subversion repo并有pull循环,为什么客户端重复此操作?这是浪费时间。。。但它不能破坏任何东西,因为

我当前的设置是存储在Mercurial存储库中的Subversion存储库。

是否是错误。不是"不优雅"、"无效"、"容易出错",而是-错误

Subversion repo的Mercurial克隆(带有hgsubversion)是Mercurial经典repo,它具有外部的Subversion(在[paths]中作为目标之一)和一些特定于链接的元数据。

显然,这在"hg help subversion"中得到了回答:

When interacting with Subversion, hgsubversion relies on information
about the previously converted changesets. This information will not be
updated if pushing or pulling converted changesets to or from any other
source. To regenerate the stored metadata, run "hg svn rebuildmeta
[URI]". This must also be done if any converted changesets are ever
removed from the repository.

使用"hg-svn-rebuildmeta[URI]"完美地解决了克隆无法正确提取新修订的问题。

最新更新