在hg repos之间以托管方式共享文件

时间:2010-10-25 20:41:14

标签: version-control mercurial

问题:一个hg存储库有一个我要更新的文件&维护在另一个hg存储库中,我不想复制&糊。我确实希望在两个回购中都有这个文件。

情景:

使用产品0001

项目A 有一个hg存储库。

在路上,项目B 正在旋转。基本上没有耦合 项目A和B之间,但有一些文件 共享。

以托管方式控制文件的版本至关重要:copy& 粘贴不是一个可行的解决方案。

有一些解决方案可行 -

  • 将两个repos合并到产品仓库中。但是,这意味着一组文件的版本号将因其他地方的流失而发生变化。此外,不同的项目并不十分相关。
  • 将两者转换为subrepo。我不确定这是正确的做法,subrepos似乎有一些与父回购相关的时髦行为。 (或者他们曾经?)

扩展此问题是在产品之间共享某些文件的概念。不知何故,文件需要被共享并被正确跟踪为单个文件,但是在两个不同的产品中。

一般问题可以这样说 -

  

给定一组产品,每个产品都有自己的存储库,在开发中共享和开发存在于彼此存储库中的文件(想想实用程序例程和框架),在产品之间保持文件版本一致的hg解决方案是什么。

这里有什么好的解决方案?

1 个答案:

答案 0 :(得分:3)

你的第二个电话是正确的。您应该提取将存储在两个存储库中的文件,并将其作为第三个存储库,然后为项目A和项目B中的每个存储库创建一个子存储库。

我不知道你什么时候第一次看到subrepos,但是他们已经存在了一年,而且得到了很好的支持。

在堆栈溢出时阅读一些subrepo相关答案,确保你的subrepo路径相对(不是绝对w / http://等),他们会很好地对待你。

<强>更新

今天1.7版本的mercurial包含了subrepos的这些增强功能:

  • 支持重新映射子存储库源路径(请参阅hgrc(5)中的[subpaths])
  • 使用--subrepos/-S
  • 将add,diff,incoming,outgoing和status命令递归到subrepos
  • subrepo:添加对'hg archive'的支持
  • subrepo:修复SVN子目录的状态检查(issue2445)