同一个项目,多个客户git工作流程

时间:2009-10-12 16:01:33

标签: django git github branch

在我的first question之后,我希望在我的案例中确认最佳git工作流程。

我有一个django项目,在github上托管,并且每个自己的分支都有不同的克隆:customerA,customerB,demo ...(想想网站)

分支共享相同的核心但具有不同的数据和设置(这些是在gitignore中)

当我在CustomerA分支机构工作时,我应该如何将一些错误更正复制到其他部署?

当我创建一个新的通用功能时,我创建一个特殊的分支,然后将其合并到我的主人。然后,要部署在'客户端'上,我将主分支合并到客户分支。这是正确的方法吗?或者我应该改变吗?

# from customerA branch
git fetch origin master
git merge origin master

另外,我为每个客户创建了一个远程分支,因此我可以将客户分支备份到github。

它看起来是一个非常经典的问题,但我想我不会以正确的方式使用git

感谢。

4 个答案:

答案 0 :(得分:2)

我会在一个知名的地方拥有一个项目仓库,其中包含一个带有公共代码的主分支,以及用于特定部署的分支(例如客户/ A客户/ B演示)。

然后,我会为每个客户,演示服务器,以及其他每个分支机构签出。您可以使用单个项目仓库中的提交挂钩从这些分支中自动提取这些内容。

每个开发人员都会拥有项目仓库的本地副本,进行本地工作,然后将内容推送回单个项目仓库。

挑战将是保持分支机构与主人分道扬and并进行定期合并,以便分流不会随着时间的推移而增长。

我已经看到这个解决方案在网络的某个地方更详细地描述了某个地方,但我再也找不到了。一些关于将git用于登台和制作Web服务器的博客文章,IIRC。

答案 1 :(得分:1)

如果三个站点共享一些“核心”代码(例如Django应用程序),您应该将该核心分配到其自己的repo中,并使用git submodules将其包含在其他项目中,而不是复制它。

答案 2 :(得分:0)

我会有一个名为project-master的回购或类似的回购,以及每个客户的回购。然后,当您有代码时,您需要可以使用这些客户端回购,您可以从项目主数据库转到该回购。

答案 3 :(得分:0)

不要将分支中的项目分开,将它们分成不同的存储库。

使“通用”代码足够通用,以便costumerA的公共代码副本与costumerB的公共代码副本完全相同。

然后,您不必拉或合并任何东西。当您更新公共代码时,costumerA和costumerB都将自动获得更新(因为它们使用相同的公共代码)。

通过“常见”代码:我指的是为您正在开发的网站提供支持的应用程序包/系列。

我假设costumerA和costumerB存储库只包含特定于网站的设置和模板等内容。

这里的关键是使“通用”代码具有通用性:不要让costumerA使用“常见”代码的“略微修改版本”。

另外,我建议使用不依赖git的部署机制。 git是一个很棒的源代码管理工具;但它并非设计(AFAIK)作为部署工具。