2013-08-18 66 views
0

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

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

阅读吨的文章后,这是我的结论至今:

  • 的Git分支不会在我的情况很好地工作。我为每个项目需要不同的文件夹,所以我可以同时运行这些站点。
  • 将子代码“子模块化”到每个客户回购中似乎不是正确的解决方案,因为基础不是项目中的子文件夹,而是“项目”。
  • 采樱桃谬误的变更要求的基础远程添加到客户项目和看似复杂(我haven't能够让它工作至今)

所以据我了解,我应该创建每个新客户的新回购,最初从基地复制代码,并创建用于在项目间移动更改的补丁(我不关心历史记录)。我也许可以采用这种方法,特别是如果我可以创建一个自动化过程的工具。

有人可以告诉我,如果我在正确的轨道上,我应该如何去理想地添加新的网站(记住工作流应该为几个开发人员工作)。

在此先感谢

回答

0

我没有看到任何分支机构不会为此工作的原因。您应该能够在基本分支上进行常见提交,并为每位客户创建一个分支。每当有基础分支的更新时,他们将被合并到不同的客户分支中。就像你现在在做TFS一样。

如果您打算直接从混合工作树中提供服务,需要为每个正在提供服务的站点提供单独的存储库副本,以便您可以在每个站点中检出不同的分支。但是,您仍然可以将所有分支包含在Github上的单个存储库中。

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

+0

你的答案的中间部分看起来很有趣。但是,如果我只有一个存储库,那么所有分支将存在于该存储库中,这可能变得很难维护。想象一下,每个客户都拥有自己的生命周期,具有部署/修补程序/开发分支。我想我真正想做的(概念上)是为每个客户分配主要项目,但显然这是不可能的。 – jbc

+0

嗯,我发现这个解决方法http://bitdrift.com/post/4534738938/fork-your-own-project-on-github分叉你自己的项目。我想我会试试看。我唯一担心的是,如果我能够只吸引某些变化,并且能够将客户项目的变化推到基地。 – jbc