1

我有一个基于 CodeIgniter 开发的项目。该项目的主要部分是我正在创建的一个私有系统,但我想将它添加到源代码控制中,以获得所有相关的好处。现在我正在使用 Mercurial,所以我做了整个 hg init 位,所以我已经设置了存储库。

现在,我做的一件事是为我在这个项目中使用的 CodeIgniter 创建一个库。现在我想让这个库打开,所以我需要一个单独的仓库。

对于不熟悉 CodeIgniter 库开发的任何人,这里有一个参考:

application
  /config <- configuration files
  /libraries <- library logic in here

现在我可能会在这个项目的过程中开发更多的库,所以我不能只是在应用程序文件夹中转储一个 repo 而不将它们全部聚集在一起。

我所做的是这样的:

dev/ci/library <- library here
dev/project <- project here

现在在这两个文件夹中,我创建了一个存储库。我想做的是让项目存储库自动引用库存储库,这样我就可以拥有一个私有和一个公共存储库,正如我之前解释的那样。

我读过,这样做的主要方法是使用子存储库,但我只能找到嵌套存储库的示例(我发现无论如何都不清楚)。如何让它引用另一个存储库,如 svn:externals?

4

2 回答 2

3

您是对的,Mercurial 中的子存储库(或 Git 中的子模块)基于嵌套组织
但在您的具体情况下,您需要:

  • 两个独立的回购,
  • 没有嵌套

协调两个组织(您的组织和嵌套的“子存储库”)的一种方法是拥有三个存储库

  • 父回购(私人回购,如可以推送到私人回购)
  • 项目(私人项目,如可以推送到私人仓库)
  • 图书馆(公共图书馆,如可以推送到公共回购)

这将给出以下内容:

/dev
  .hg (private repo)
  .hgsubs (declare the two nested repos 'project' and 'ci/library')
  project
    .hg (private repo for your project)
    config
    .hgignore (for ignoring anyhting from libraries)
    libraries (private directory, not version)
      (symlink to /dev/ci/library)
  ci
    library
      .hg (public repo 

这样,您可以保持:

  • 你的两个仓库根据需要分开
  • 两者之间的链接,以便能够在您留下它们的确切参考处取回这两个存储库(即您最后一次推送这些存储库中的每一个)。
于 2010-12-27T15:46:07.470 回答
0

在 Mercurial 1.3 中实现,这里是说明

于 2010-12-27T15:21:47.763 回答