使用git进行Magento工作流程

时间:2012-09-02 22:59:34

标签: git magento workflow dvcs repository

我一直使用cron作业编写 Magento 网站来处理备份,但在尝试恢复到以前版本的网站时,它会变得有点笨拙。我基本上必须挖掘备份并手动还原。我已经阅读了git,我喜欢能够在开发周期中记录我的更改的想法,并通过一些命令恢复到我更改的特定内容。

目前我在我的本地仓库(master,develop)有两个分支机构。我基本上在开发分支中完成所有开发工作,并在完成一组特定任务后将所有内容合并到主分支上,然后将我的gitbucket repo推送到我的gitbucket repo用于备份目的,并且只是为了进入使用a的habbit远程回购。

我是git的新手,所以这个声音对我的场景来说是否足够,或者任何人都可以推荐一个使用git与Magento的单人商店的良好工作流程?感谢。

1 个答案:

答案 0 :(得分:11)

我们使用GitFlow模型进行Magento开发。它与您的相似,但为临时站点提供了额外的分支。更大的开发任务/修复也在不同的分支机构完成,以确保开发始终相当稳定。我们的临时站点是一个git repo,其中已经检出了分段分支,并且生产站点已经检出了主分支。当我们准备将更改部署到暂存时,我们将它们合并到本地计算机上的暂存,并推送到中央git仓库,然后拉上服务器。运行良好,但你需要小心app / etc / local.xml,因为在每个环境中应该是不同的。您还需要确保媒体和var文件夹之类的内容不会出现在您的git仓库中。

对于Magento来说是

Github publishes a .gitignore,但我遇到的问题是它排除了所有Magento核心文件。最终得到一个很好的干净存储库,它只包含您的更改,但不包含可部署的内容。我们使用更简单的.gitignore,它基本上只排除了media var和app / etc / local.xml。我们通常使用单个远程(例如Github)并从那里部署。

在我们部署的服务器上,我们通常都安装了shell访问和git,因此部署是在正常的远程控制和运行git pull(或fetch& merge)的问题。

我们将暂存站点作为git中的单独分支进行维护,并以相同的方式部署它们。因此,我们的过程看起来像功能分支中的Develop,并在完成后合并为“develop”。集成测试完成后,将“develop”(或者cherry-pick更改)合并到“staging”并进行部署。当准备生产时,将“staging”(或者挑选个别更改)合并到“master”分支。这基本上是GitFlow但是“准备释放”分支很长时间。

正如评论中链接的Sonassi tutorial指出的那样,符号链接媒体的问题在于,如果从生产中删除媒体文件,则会在分段中获得断开的链接,反之亦然。我们不是将这两者联系起来,而是从git更新登台代码,但是否则分别运行登台和生产站点。如果我们在分段中需要新数据,我们会出于任何原因获取生产媒体和数据库的副本并将其恢复到暂存站点。

Gitflow模型使用版本号作为发布标记,如果您拥有团队同意发布的版本号,请使用它们。否则,如果你有某种里程碑计划,或者你正在努力的sprint系统,并且可以通过这种方式识别发布,那也可以。如果所有其他方法都失败了,我们使用部署发生的日期/时间。 e.g。

git tag -a deployed-`date +%Y%m%d-%H%M` -m "Code release at `date`"