如何在 Mercurial 中使用重叠存储库

发布于 2024-09-02 11:25:22 字数 215 浏览 3 评论 0原文

我经常想要有一个主要的源代码存储库,由几个“类似”的项目共享。每个子项目都包含大部分相同的文件,但都是一个特定的可配置实例。这意味着每个实例通常需要不同的一堆文件和目录。

在 CVS 中,我曾经创建主存储库和辅助存储库,然后使用模块文件将两者绑定在一起以获得特定名称。在 SVN 中,我使用 svn:externals 将辅助目录绑定到主目录中。

Mercurial 中有哪些功能?

Often I want to have a main repository of source, shared by several "similar" projects. Each sub-project contains most of the same files, but is a specific configurable instance. That means there are usually a bunch of files and directories that need to be different for each instance.

In CVS I used to create the main repository and the secondary ones, then use the modules file to bind the two together for a specific name. In SVN I used svn:externals to tie back the secondary directories into the main one.

What works in Mercurial?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笙痞 2024-09-09 11:25:22

这取决于需要不同的特定文件的性质。
如果您可以将它们转换为模板文件,那么您可以:

  • 将主存储库共享为 SubRepo (如文档中所述:SubRepos 是“最接近使用 svn:externals 属性标记的 Subversion 目录所能实现的目标”)
  • 拥有“类似”的项目,其中将要:
    • 将该主存储库作为子存储库 (引用特定修订
    • 运行版本化脚本,该脚本将采用这些模板文件并根据每个环境使用正确的值构建实际文件。

这样,您就可以将模板(在主存储库中)和值(每个类似的项目根据其特定环境了解)分开。
话虽如此,并非文件的每个变体都可以作为“要实例化的模板”进行处理。

It depends on the nature of the specific files that need to be different.
If you can transform them as template files, then you can:

  • have a main repo shared as a SubRepo (as said in the documentation: SubRepos are the "closest to what you can achieve with Subversion directories marked with the svn:externals property")
  • have "similar" projects which will:
    • include that main repo as a subrepo (referencing a specific revision)
    • run a versioned script which will take those template files and build the actual files with the right values per environment.

That way you keep separate the templates (in the main repo) and the values (which each similar projects know about depending on their specific environment).
That being said, not every variation of files can be processed as "templates to be instantiated".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文