0

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

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

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

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

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

4

2 回答 2

0

中央服务器(即使在 Mercurial 中)是CENTRAL SERVER。如果它克隆了 Subversion 存储库并具有拉取周期,为什么客户端要重复此操作?这是浪费时间......但它不能破坏任何东西,因为

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

只是错了。不是“不优雅”、“无效”、“容易出错”,而是 -错误!!!

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

于 2012-12-13T02:32:58.780 回答
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]”完美地解决了克隆无法正确提取新修订的问题。

于 2013-01-08T19:01:24.210 回答