我正在寻找关于在mercurial中管理多个“网站”的最佳实践场景。由于我可能在Web根目录中有多个站点,所有站点都不同 - 但有些相似(因为它们是根应用程序的“自定义”)
我应该吗? A)创建wwwroot文件夹的单个存储库(捕获所有站点的所有更改) B)使EACH坐标文件夹成为不同的存储库这个问题是每个站点需要一个不同的物理目录,因为vhost指向开发,并且当前需要跨站点具有“某些”物理文件差异。
这里的最佳做法是什么?我倾向于每个目录的单独存储库。这将使跟踪任何分支和合并为该ONE网站清洁....
答案 0 :(得分:1)
这取决于您的软件的结构,以及不同网站的独立程度。最好的情况是,您可以使用核心代码,例如库,它位于自己的目录中,并且不同站点中甚至不需要更改单个核心文件。如果您想在单个仓库中开发核心以及不同的站点,或者从站点中分离核心,那么您可以自由选择。当核心和不同的网站相互依赖时,你可能不得不在一个单一的回购中处理所有这些网站。
因为根据我的经验,当不同的部分彼此独立时,开发工作会更好,我强烈建议将核心内容纳入可以通过目录包含在网站中的内容。
下一点是如何开发不同的网站。如果他们共享大量代码,则可以将它们开发为不同的分支。但这个方案有两个缺点:
如果他们共享大量公共代码,您可以考虑将不同站点的公共部分移动到核心。
另一种情况是,如果他们都没有任何共同点,那么事情会好得多。然后,您需要决定是否希望它们驻留在不同的存储库中,或者作为单个存储库中的不同目录。当这些不同的站点以某种方式彼此相关时(比如说它们都是同一个公司),那么将它们放入一个共同的仓库,作为不同的子目录可能会更好。当它们彼此无关(每个站点属于不同的客户,并且这些站点上的更改不是彼此同步创建的)时,每个站点的一个回购更好。
当您拥有每个站点的一个repo方法时,如果您首先创建一个包含核心组件和基本配置的模板站点,并从此模板派生您的站点repos作为克隆,那么也可能是好的。然后当您更改核心中也会影响网站的内容时,您可以在模板中进行这些更改,然后将这些更改合并到网站repos中(您只需要注意不要在其中一个网站回购中执行此更改,因为当您从站点合并到模板时,您可能会从特定站点获取到模板中的内容,而您不希望这些内容位于模板中。
所以我建议
为您的网站选择正确的开发模式
所有在一个回购中,有分支机构,当不同网站之间有很多代码交换时
但更好的重构网站不共享代码,因为分支方法有缺点
如果不同网站之间没有代码交换,则只有一个仓库,没有分支但有不同的文件夹
答案 1 :(得分:0)
我想,你必须用一个回购试试Mercurial Queues。即
将网站补丁应用到代码库后,您就可以使用每个网站的代码
了