0

我有一个基础网站项目,我用它作为几个客户的起点。每个客户都可以对我不想包含在基础项目中的项目进行特定更改。但是,有时将特定客户功能包含在基础项目中并推送给所有其他客户(例如错误修复)是有意义的。

现在我已经使用 TFS 设置了项目,因此每个客户都是基础项目的一个分支。它通过将基础的更改合并到每个分支中来工作,但这是一个非常缓慢的过程。我想切换到git(在github上),这样我就可以在本地执行这些操作并减少花费在这些操作上的时间。

在阅读了大量文章之后,这些是我目前的结论:

  • 在我的场景中,Git 分支将无法正常工作。我需要为每个项目使用不同的文件夹,这样我就可以同时运行这些站点。
  • 将基本代码“子模块”到每个客户存储库中似乎不是正确的解决方案,因为 base 不是项目中的子文件夹,它“就是项目”。
  • Cherrypicking 变更集需要将基础遥控器添加到客户项目中,并且看起来很复杂(到目前为止我还无法使其工作)

据我所知,我应该为每个新客户创建一个新的存储库,最初从基础复制代码,并创建补丁以在项目之间移动更改(我不关心历史)。我可能可以接受这种方法,特别是如果我可以创建一个自动化流程的工具。

有人可以告诉我我是否走在正确的轨道上,以及我应该如何理想地添加新网站(请记住,工作流程应该适用于多个开发人员)。

提前致谢

4

1 回答 1

0

我看不出有任何理由分支不会为此工作。您应该能够在基本分支上进行公共提交,并为每个客户创建一个分支;每当基础分支有更新时,它们就会被合并到不同的客户分支中。就像您目前对 TFS 所做的那样。

如果您要直接从 git 工作树中提供服务,则需要为每个提供服务的站点拥有一个单独的存储库副本,以允许您在每个站点中签出不同的分支。但是,您仍然可以将所有分支包含在 Github 上的单个存储库中。

另一种选择是在 Web 服务器处理的区域之外的本地使用单个存储库和工作树,然后使用部署过程将要提供的数据复制到适当的位置。由于 Web 服务器不会直接查看 git 工作树,因此您不一定需要同时签出多个分支。

于 2013-08-18T14:04:14.990 回答