(又一个)什么';从SVN存储库到HG存储库的最佳转换是什么?
我的公司有一个大型Subversion(SVN)存储库,出于各种原因,我们正在考虑迁移到Mercurial(HG)。我希望学习适合我们情况的“最佳实践”理念 我们的SVN存储库相当单一,看起来像这样:(又一个)什么';从SVN存储库到HG存储库的最佳转换是什么?,svn,mercurial,migration,repository,Svn,Mercurial,Migration,Repository,我的公司有一个大型Subversion(SVN)存储库,出于各种原因,我们正在考虑迁移到Mercurial(HG)。我希望学习适合我们情况的“最佳实践”理念 我们的SVN存储库相当单一,看起来像这样: 树干 Python_项目_1 Python_项目_2 Python_共享_代码 Flex_代码 ObjC_代码 分支机构 Python项目1发布版1.0.x 标签 Python_项目_1_发行版_1.0.0 目前,我们是存储库中任何代码和其他资源的唯一使用者,但切换的部分原因
- 树干
- Python_项目_1
- Python_项目_2
- Python_共享_代码
- Flex_代码
- ObjC_代码
- 分支机构
- Python项目1发布版1.0.x
- 标签
- Python_项目_1_发行版_1.0.0
- 专用代码(仅适用于我们)
- 共享代码(与非公共合作伙伴共享)
- 公共代码(通过开源许可证共享)
在本文中,我建议使用subrepos(哪种)或(我的首选)构建系统,从本地构建框(如ivy)中提取依赖项。Hmmm,似乎您可以使用hg svn进行试运行?抱歉,显然我没有说清楚。实际上,我并不担心如何进行迁移,而是更关心迁移后的布局。我在问题的末尾添加了一个更新来澄清。正如你所注意到的,这显然是一个重复的问题,其他提问都有一些很好的答案,完全涵盖了你的情况。如果你发现它们不够,也许可以链接到它们,并说明你的情况如何不同。照现在的样子,你会从复制者那里得到很多复制粘贴的答案,最终有人会关闭这个。谢谢你的评论。我已经对问题进行了澄清,解释了为什么我认为这与之前提出的问题不同。(如果它是我还没有找到的问题的副本,那么指向原始问题的指针也会很有用。)感谢您的澄清。我将在下面插话。一些想法:第一个链接的答案只解决了部分问题(每个项目都有一个存储库)。它没有提到相互关联的项目。第二个答案(使用次级回购)似乎很接近,但它并没有做到这一点。例如,考虑下面的内容:让<代码>嵌套< /Cord>是<代码>主< /代码>的子副本。当我更新并提交(如有必要,推送)到
nested
时,我需要main
能够更新并获得更改(用户不知道子回购关系)。然而,一些测试表明情况并非如此。作为该评论的后续:具体来说,我需要对嵌套的
存储库进行更改,以便在主
存储库中自动提供。子回购似乎只在相反的方向工作(即,对main
中的子回购的更改被提升/推回到原始嵌套的存储库)。子回购可以双向进行。使用subrepo,您有一个指向subrepo的特定修订版的指针,您可以通过仅从main中在该repo空间中更新来更新指向subrepo尖端的指针。这很像svn:外部。不过,作为一个过程问题,我建议将subrepo指针放在主轨道上,在subrepo中放置一些稳定的标记,而不仅仅是最前沿的标记。即使是在内部发布半正式的产品版本也是不错的,所以你可以说“外部项目X与内部项目Y版本Z协同工作,如果它不能用Z+1编译,就根据Z构建它”。不幸的是,至少对我们来说,我认为其中的“只是从main内部更新回购空间”是一个破坏交易的部分。我需要能够处于项目的顶层,更新并获得所有必需的依赖项。对于therepo,请使用$(find.-type d-name.hg | xargs-l dirname);执行hg更新-R$therepo;完成