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

Django 同一项目,多个客户git工作流,django,git,github,branch,Django,Git,Github,Branch,在我的工作之后,我想确认一下我的情况下最好的git工作流 我有一个django项目,托管在github,每个分支都有不同的克隆:customerA、customerB、demo。。。(想想网站) 分支共享相同的核心,但具有不同的数据和设置(这些在gitignore中) 在CustomerA分支上工作时,我应该如何将一些错误更正复制到其他部署 当我创建一个新的常规特征时,我会创建一个特殊的分支,然后将其合并到我的主特征中。然后,为了在“客户机”上部署,我将主分支合并到客户分支中。这条路对吗?或者我

在我的工作之后,我想确认一下我的情况下最好的git工作流

我有一个django项目,托管在github,每个分支都有不同的克隆:customerA、customerB、demo。。。(想想网站)

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

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

当我创建一个新的常规特征时,我会创建一个特殊的分支,然后将其合并到我的主特征中。然后,为了在“客户机”上部署,我将主分支合并到客户分支中。这条路对吗?或者我应该重新设定基准

# from customerA branch
git fetch origin master
git merge origin master
此外,我还为每个客户创建了一个远程分支,以便将客户分支备份到github

这看起来是一个非常经典的问题,但我想我没有正确使用git

谢谢


Ju.

我会有一个名为project master或类似的回购协议,以及每个客户的回购协议。然后,当您有代码需要提供给这些客户回购时,您可以从项目主回购拉到该回购。

我会在一个著名的地方有一个项目回购,其中包含一个带有通用代码的主回购分支,以及用于特定部署的分支(例如客户/a客户/B演示)

然后,我将从这些分支机构中为每个客户、演示服务器等办理结账手续。您可以使用单个项目repo上的提交钩子,让它们自动从各自的分支中拉出

每个开发者都会有他们本地的项目回购副本,做本地工作,然后把东西推回到单个项目回购

挑战将是保持分支与主分支分开,并进行定期合并,以便分流不会随时间增长


我已经看到这个解决方案在web上更详细地描述了某个地方,但是我再也找不到它了。一些关于将git用于暂存和生产web服务器IIRC的博客文章。

如果这三个站点共享一些“核心”代码(如Django应用程序),您应该将该核心代码分解到自己的回购协议中,并用于将其包含在其他项目中,而不是复制它。

不要在分支中分离项目,将它们分离到不同的存储库中

使“通用”代码足够通用,以便CustomerA的通用代码副本与CustomerB的通用代码副本完全相同

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

“通用”代码:我指的是为你正在开发的网站提供动力的应用程序包/系列

我假设CustomerA和CustomerB存储库只包含站点特定的设置和模板

这里的关键是使“通用”代码通用:不要让Customera使用“通用”代码的“稍微修改的版本”


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

你是说通过回购而不是分支机构分离客户更好吗?为什么呢?如果客户被回购分开,你可以使用git来回推,而不是来回移动分支。听起来你想有选择地为某些客户移动功能——这可能是最有效的方法。或者,您可以使用不同的设置文件,并根据每个项目启用/禁用不同的应用程序功能。不过,这需要你相应地编写应用程序。但如果我有一个影响所有客户端的bug修复程序呢?我必须手动更新所有回购协议以集成错误修复。您必须为该场景编写“合并到多个回购协议”命令脚本。我实际上就是这样做的。在customerA部署中,我这样做是为了更新来自master分支的代码:git pull origin master git merge master这是正确的方法吗?对不起,实际上这就是我从customerA分支所做的:git fetch origin;git合并源主机;对吗?thanx。实际上,我的客户共享相同的应用程序,但有些是定制的,所以我使用单一回购。当我有自定义客户应用程序时,我将添加子模块。