【问题标题】:Multiple versions of a git project一个 git 项目的多个版本
【发布时间】:2013-08-18 13:16:59
【问题描述】:

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

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

阅读大量文章后,我的结论如下:

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

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

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

提前致谢

【问题讨论】:

    标签: git multiple-versions patch


    【解决方案1】:

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

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

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

    【讨论】:

    • 您答案的中间部分看起来很有趣。但是,如果我只有一个存储库,那么所有分支都将存在于该存储库中,这可能会变得非常难以维护。想象一下,每个客户都有自己的生命周期,包括部署/修补程序/开发分支。我想我真正想做的(概念上)是为每个客户分叉主要项目,但显然这是不可能的。
    • 嗯,我发现了这个解决方法bitdrift.com/post/4534738938/fork-your-own-project-on-github 用于分叉您自己的项目。我想我会试试看。我唯一担心的是我是否只能提取某些更改,以及是否可以将更改从客户项目推送到基础。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2011-08-31
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多