简而言之,我怎样才能使外部 mercurial 存储库完全不知道给定内部存储库的存在?我基本上只是想忽略子文件夹中某些 .hg* 的存在,并让外部存储库继续其快乐的方式。
换句话说,我希望有两个彼此无关的 mercurial 存储库,但恰好跟踪同一个文件。是 - 对该文件的编辑必须提交两次,等等;但在这种情况下,这就是我想要的。
背景:
我正在回避 mercurial 无法处理部分克隆的问题,但我相信它会起作用。我们有一个巨大的项目树检查到 mercurial,承包商需要访问这棵树的一部分。我对子存储库方法的理解是很难回溯到现有的树中。无论如何,我不想强迫我所有的同事这样做,这样我就可以与一个承包商合作。
我想做的是在我们整个项目树的克隆中的一两个文件夹中创建内部存储库。然后我计划将这些内部存储库进一步克隆给承包商。这不是最好的,但它会起作用;在他推送给我之后,我可以合并到内部存储库触及的文件,然后走到外部存储库检查我们的整体树。理想情况下,从外部存储库的角度来看,似乎一些魔法只是更新了一些文件。
问题是 mercurial 似乎对自己了解太多:)。例如,使用 hg init、hg add * 和 hg clone 时一切正常;但是当他在他的最后添加一个新文件并且我去 hg 在外部存储库中添加它时,我得到(混淆):
中止:路径 'foo/bar.txt' 在 repo 'foo' 内
我可以通过将内部存储库的 .hg 重命名为其他名称来解决它,但总的来说,这种方法已经失控了。hg stat 忽略内部存储库也有问题;以及我试图从外部存储库执行的其他命令和其他事情通常会中断(我在与承包商共享的一个文件夹中的子存储库中遇到了很多麻烦)。
有任何想法吗?
(我确实提出了一个理论上的解决方案:在我的文件系统的其他地方创建另一个存储库 baz/,然后使用文件系统符号链接从原始树中提取文件夹。但后来我硬连线到给定的机器连接两个存储库,我担心这种方法会产生我没有想到的其他后果。从外部的角度隐藏内部存储库会更方便。)
谢谢!