一个Mercurial存储库可以存在于另一个Mercurial存储库中吗?

时间:2010-05-20 13:16:14

标签: mercurial bitbucket mercurial-subrepos

一个hg repo可以在我的本地文件系统中的另一个hg repo中存活吗?

screenshot of one repo inside another

我正在为'sandbox'提取bitbucket wiki,我想知道这应该放在repos/sandbox/wiki还是repos/sandbox-wiki

前者可以吗?

修改:请参阅Subrepository

4 个答案:

答案 0 :(得分:7)

简短的回答是肯定的,但我无法想象你为什么要这样做。

在你的例子中,我认为你应该选择:

repos/sandbox-wiki

[edit] Additionaly:

Yo Dowg, I herd you like repositories.

So we put a repo in your repo so you can version while you version

<强>: - )

答案 1 :(得分:5)

是和否。取决于你想做什么。你可以创建repo'sandbox / wiki',但是这个内部repos中的文件不会在外部'sandbox'仓库中提交(@Jason是对的)。如果你不想,没问题。

尝试在sandox中显式添加wiki repos中的文件,您将收到以下消息。如果您只是将路径添加到包含内部存储库的某个目录,则只会忽略这些文件。

来自sandox root directoy:

   hg add wiki/myfile
   abort: path 'wiki/myfile' is inside repo 'wiki'

答案 2 :(得分:1)

Mercurial不允许嵌套存储库,但至少有一个原因:

想象一下,您正在一个项目中工作:/ MyProject。在这个文件夹中,您可以放置​​所有内容:代码,文档,测试等。

您希望备份您的工作,因为它非常重要,因此您可以为/ MyProject创建存储库。然后,加班你使用捆绑包来保存/ MyProject的演变并将它们备份到USB闪存中,以便你可以恢复所有内容以防万一你的硬盘坏了。

请记住/ MyProject包含所有内容。在所有这些事情中,有主要代码和一些辅助项目。您还想跟踪/ MyProject / AuxiliaryProject中辅助项目的进度,以便使用Mercurial跟踪其演变。

此外,您希望为主代码创建一个单独的存储库:/ MyProject / Main

在这种情况下,您需要嵌套存储库:一个很大的存储库,可以使用包和子存储库备份所有内容以管理每个子项目。

我认为Mercurial应该在初始化存储库时为用户提供多种选择。例如:   - 忽略嵌套的存储库   - 包括嵌套存储库但忽略.Hg文件夹(即表现为没有嵌套存储库但不忽略嵌套存储库中包含的信息)。   - 包括嵌套存储库,还包括.Hg文件夹(用于备份目的)

---------编辑: 子存储库是一项正在进行的功能: https://www.mercurial-scm.org/wiki/subrepos

此外,还有一个名为“forest”的扩展程序,将来可能会过时: https://www.mercurial-scm.org/ForestExtension

答案 3 :(得分:-1)

您需要在沙箱中设置一个.hgignore文件以排除wiki,因为mercurial假定它负责所有后代。这可能会产生更多的用户混淆而不是它值得。