我有一个看似独特的情况。我需要一个可以从Subversion服务器获取的中央Mercurial存储库,其克隆也可以从同一个Subversion服务器提取更新。更新将提交给Mercurial存储库以及通过Mercurial提交的更改。
现在,hgsubversion 似乎首先运行良好,克隆Subversion存储库,允许我通过Mercurial提交更改,并正确地从Subversion存储库中提取更新。但是,当我克隆hgsubversion存储库时,克隆尝试再次将整个Subversion存储库拉出来,尽管它已经存在于存储库中。
有没有办法解决这个问题?有没有更好的方法来设置它?
作为参考,我目前的设置是存储在Mercurial存储库中的Subversion存储库。 Mercurial提交也提交.svn文件夹,因此任何克隆存储库的人都可以在文件夹上运行SVN Cleanup,然后SVN Update从Subversion服务器获取最新文件。然后他们运行hg Commit,然后将文件推送到中央Mercurial存储库。这种方法效果不错,但我更愿意找到更好的解决方案。
注意:我不需要将更改推送回Subversion服务器。我只需要改变。
答案 0 :(得分:0)
中央服务器(即使在Mercurial中)是 CENTRAL SERVER 。如果它克隆了Subversion repo并且有拉循环为什么客户端重复此操作?这是浪费时间......但它不会破坏任何东西,因为
我当前的设置是存储在Mercurial存储库中的Subversion存储库。
错误。不是“不优雅”,“无效”,“容易出错”,但是 - 错误!!!
Subversion repo(带有hgsubversion)的Mercurial克隆是Mercurial经典回购,其外部有Subversion([paths]
作为目标之一)和一些链接特定的元数据。
答案 1 :(得分:0)
显然,这在“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]”完美地解决了克隆无法正确提取新版本的问题。