gpt4 book ai didi

version-control - 分布式版本控制。 - Git & Mercurial...多个站点

转载 作者:行者123 更新时间:2023-12-04 07:06:07 25 4
gpt4 key购买 nike

我正在寻找在 mercurial 中管理多个“站点”的最佳实践方案。由于我可能在 Web 根目录中有多个站点,所有这些站点都不同 - 但有些相似(因为它们是根应用程序的“自定义”)

我是不是该
A)制作 wwwroot 文件夹的单一存储库(捕获所有站点的所有更改)
B)使每个文件夹位于不同的存储库

这个问题是每个站点都需要一个不同的物理目录,因为 vhost 指向开发,并且当前需要跨站点具有“一些”物理文件差异。

这里的最佳做法是什么?我倾向于为每个目录使用单独的存储库。这将使跟踪该 ONE 站点清洁器的任何分支和 merge ....

最佳答案

这取决于您的软件的结构以及不同站点的独立程度。最好的情况是您可以像使用库一样使用您的核心代码,它位于自己的目录中,并且在不同的站点中甚至不需要更改单个核心文件。然后,您可以自由选择是否要在单个 repo 中开发核心以及不同的站点,或者将核心与站点分开。当核心和不同站点相互依赖时,您很可能必须在一个存储库中处理所有这些。

由于根据我的经验,当不同部分相互独立时,开发工作会更好,我强烈建议将核心内容放入可以通过目录包含包含到站点中的内容中。

下一点是如何开发不同的站点。如果它们共享大量代码,则可以将它们开发为不同的分支。但是这种方案有两个缺点:

  • 开发人员通常看不到不同的站点,因为通常只有一个已 checkout
  • 开发人员必须非常小心在哪里创建更改,以便只有想要的更改才会进入其他分支,而不是仅对单个分支特殊的东西

  • 如果它们共享大量通用代码,您可能会考虑将不同站点的公共(public)部分移动到核心中。

    另一种情况是,如果他们都没有共同点,那么事情就会好得多。然后您需要决定是希望它们驻留在不同的存储库中,还是作为单个存储库中的不同目录。当这些不同的站点以某种方式相互关联时(假设它们都是同一家公司),那么最好将它们作为不同的子目录放入一个公共(public) repo 中。当它们彼此无关时(每个站点属于不同的客户,并且这些站点上的更改不是彼此同步创建的),比每个站点一个 repo 更好。

    当您使用每个站点一个 repo 的方法时,最好先创建一个模板站点,其中包括核心组件和基本配置,然后从该模板中将您的站点存储库派生为克隆。然后,当您更改核心中也影响站点的某些内容时,您在模板中进行这些更改,然后将这些更改 merge 到站点存储库中(您只需要注意不要在其中一个站点存储库中进行此更改,因为当您从站点 merge 到模板时,您可能会将特定站点的内容放入模板中,而您不希望这些内容出现在模板中)。

    所以我建议
  • 开发核心作为一个独立的产品
  • 为您的网站选择正确的开发模式
  • 当不同站点之间进行大量代码交换时,所有在一个仓库中,带有分支
  • 但最好重构站点以不共享代码,因为分支方法有缺点
  • 如果不同站点之间没有代码交换
  • 都在一个 repo 中,没有分支但不同的文件夹
  • 如果它们完全独立,则为每个站点一个 repo。
  • 关于version-control - 分布式版本控制。 - Git & Mercurial...多个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339938/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com