Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何克隆hgsubversion存储库并保留Subversion版本信息?_Svn_Mercurial_Hgsubversion - Fatal编程技术网

Svn 如何克隆hgsubversion存储库并保留Subversion版本信息?

Svn 如何克隆hgsubversion存储库并保留Subversion版本信息?,svn,mercurial,hgsubversion,Svn,Mercurial,Hgsubversion,我的处境似乎很特殊。我需要有一个中央Mercurial存储库,它可以从Subversion服务器中提取,并且它的克隆也可以从同一个Subversion服务器中提取更新。更新将与通过Mercurial提交的更改一起提交到Mercurial存储库 现在,hgsubversion一开始似乎工作得很好,它克隆了Subversion存储库,允许我通过Mercurial提交更改,并正确地从Subversion存储库中提取更新。但是,当我克隆hgsubversion存储库时,克隆会尝试重新拉取整个Subver

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

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

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

作为参考,我当前的设置是存储在Mercurial存储库中的Subversion存储库。Mercurial还提交.svn文件夹,因此任何克隆存储库的人都可以在该文件夹上运行svn清理,然后执行svn更新,以从Subversion服务器获取最新文件。然后运行hgcommit,然后将文件推送到Mercurial中央存储库。这种方法效果还算不错,但我更愿意找到更好的解决方案

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

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

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

就是错了。不是“不优雅”、“低效”、“容易出错”,而是-错误


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

显然这在“hg help Subversion”中得到了回答:


使用“hg svn rebuildmeta[URI]”可以很好地解决克隆无法正确获取新版本的问题。

对不起,我不明白您的答案。克隆的hgsubversion存储库再次拉着整个SVN存储库,一个版本一个版本地拉,这浪费了不少时间,并且产生了一个巨大的新头。这对于我们正在做的事情是不可接受的。中央存储库仅正确地提取所需的修订。我也需要存储库克隆的这种行为。此外,尽管我赞同您对SVN/Mercurial设置的响应,但这是我找到的唯一解决方案,可以满足我的需要:克隆Mercurial存储库的能力,该存储库也可以从SVN存储库中提取。Mercurial克隆必须能够从SVN存储库中提取。如果你对此有更好的解决方案,我很乐意接受建议。@Josh-好的,我稍后会测试你的设置(现在必须在我最喜欢的厨房工作)。但我仍然不明白两件事:1。如果central Mercurial repo(所有克隆2的默认目标)上已经有SVN修订版,为什么(希望)从克隆中提取SVN repo。在这里您可以看到“Mercurial repo中的SVN repo”-当您通过hgsubversion与SVN通信时,初始克隆的结果是Mercurial repo。从aragost Trifork的“Mercurial Kick Start”中可以看出,这本书是很有用的,请允许我澄清一下。我当前的设置不使用hgsubversion,而只使用Mercurial存储库中的Subversion存储库。我试图将hgsubversion设置为一个(更好的)替代方案,但它目前给了我我在这里详细介绍的问题(它试图重新调用每一个修订版,而不仅仅是上次拉取后的修订版,但仅在从克隆中拉取时)。至于原因。。。老实说,考虑到这一点,我不能完全肯定。目前,我们的设置是克隆中央存储库并从克隆中提取SVN更新,然后将更新推送到中央存储库。但是…真的,最好在中央存储库上设置hgsubversion并进行更新。我最担心的是,如果出现问题,主存储库将丢失。我觉得从克隆中提取SVN更新(最好是通过hgsubversion)然后推送到中心可能更安全,但是……也许不是?
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.