【问题标题】:Magento upgrading with Git使用 Git 升级 Magento
【发布时间】:2011-09-01 09:04:03
【问题描述】:

我即将将我们的 Magento 商店从 1.5.0 升级到 1.6.0,我知道我想要怎么做,但我对需要使用的命令有点不确定.

对于初学者,我在生产服务器上有我当前的商店,我有 git 设置,并且回购的副本在我们的 Beanstalk 帐户上。我在该回购中有完整的更改历史等,并且理想情况下希望保留这些内容。

我有一个我们购买的主题,然后进行了相当大的优化,但幸运的是,几乎所有优化都在 override.css 文件中。虽然,主题文件本身有一些小的代码更改。

由于 Magento 使用 SVN 作为他们的 CVS,我发现(在 Github 上)一个 Magento 版本的镜像。

所以,到目前为止,我想“合并”三个位置:

  1. 生产 (git)
  2. Magento 镜像 (git)
  3. 主题(不是 git 或 svn,普通的旧目录)

我正在考虑将 Magento 镜像作为一个分支添加到我现有的 git 存储库中,将其称为 1.6.0 或类似版本。然后不知何故将纯主题目录和文件拉入主分支...

我在正确的路线上吗?

为了保护生产站点,我还在考虑添加网站的暂存版本来运行这些合并以对其进行测试。

【问题讨论】:

  • 您当前的分支是否基于 github 的 magento 镜像? (我猜这是我维护的那个)
  • @Lee 不,我以前从未在 github 上使用过你的镜像。
  • @Lee 不幸的是,即使您的仓库与它自己的分支机构发生冲突,您的仓库也无法在没有冲突的情况下合并,所以不要将您的 $ 赌在上面。
  • @dannymcc create your own magento git repo locally 或使用one 可以在没有冲突的情况下顺流合并
  • @Anton 如果我为镜像创建自己的 git 存储库,那么我将如何将这些更改提取到我当前的生产存储库中?

标签: git magento merge github upgrade


【解决方案1】:

这很容易,但您必须确保您的网站基于一些主存储库,该存储库可以在流中与早期版本合并(具有所有 Magento 版本作为标签或分支的存储库,可以从第一个合并到最新版本) .所以这里有两种情况要遵循

1。我的网站不在 git 中

  1. 首先从具有所有 magento 版本(至少到您当前使用的版本)的主存储库克隆
  2. 获取您的克隆并使用您当前使用的版本签出新分支
  3. 将您当前的网站复制到此版本
  4. 完成后,“git status”将显示与您开始使用的原始版本的差异以及您对其所做的所有编辑
  5. 现在可以智能地将所有核心编辑移动到本地代码池,并将核心中的任何更改恢复为原始文件,将默认或基本模板中的任何 edts 移动到您自己的模板,并恢复默认或基本模板文件中的更改。所有看起来根据原始版本修改的文件也是如此。这使您“我的所有更改都与原始代码分开,它们不会与我的升级冲突”,提交此状态是明智的
  6. 如果所有内容都与原始文件分开,那么就该升级了。打开默认主题,禁用所有本地和社区扩展,将新版本与您当前的分支合并。访问该站点以执行升级
  7. 现在您的网站已经升级,您可以一一打开您的主题和自定义扩展,看看哪些兼容,哪些不兼容。一一调试解决

我的网站已经在 git 中了

  1. 如果它基于包含所有版本的存储库,则您处于良好状态(跳过 2)
  2. 如果不是,那么您可以添加一些将其全部作为遥控器的存储库,然后开始合并当前版本并将更改与原始版本分开,如第一个场景中所述
  3. 使用当前站点的新分支
  4. 与新版本合并
  5. 禁用所有本地、社区扩展,打开默认主题,然后升级
  6. 启用主题,一一扩展并调试发生冲突的地方

如下所示的 git 设置很常见:

  • MAGENTO MASTER -> 具有所有 MAGENTO 版本的远程 ORIGN

  • 你的大师 -> 远程起源是 MAGENTO 大师

    • 分支:yoursite_dev
    • 分支:yoursite_stage
    • 分支:yoursite_live

您始终在 your_dev 分支上进行开发,如果更改已准备好进行评估,则将 _stage 与 _dev 合并,如果更改获得批准,则将状态从 _dev 或从 _stage 合并到 _live。

基于理论端点的命令

git clone git://github.com/speedupmate/Magento-CE-Mirror.git yourprojectdir 
cd yourprojectdir
git fetch --tags
git tag
git checkout -b yoursite_dev magento-1.5.0.1
git checkout -b yoursite_stage yoursite_dev
git checkout -b yoursite_live yoursite_dev
git checkout yoursite_dev
git branch
//copy in your site
//separate changes or originals
//add any file/dir with local importance to .gitignore
//turn of your default theme, disable all local/community extensions and overrides
//assuming you are on dev branch commit your clean state 
git merge magento-1.6.0.0
//visit the site to execute the upgrade 
//enable your theme , extensions , debug

这为您提供了方案 1 的起点,之后您可以在您的网站中复制并开始分离更改并在您当前的网站和主题中进行排序

【讨论】:

  • 好的,所以现在我有了我的主要生产仓库,并且我已经添加了 magento-ce-mirror 作为它的遥控器。我应该为最新版本创建一个分支并从镜像中拉取它,还是应该为我的最新生产状态创建一个分支并将镜像拉入master?
  • 在我的帖子中添加了一些伪命令。请注意,如果您的原始 git 存储库从一开始就不是源自主 magento 存储库,那么您将拥有单独的树,并且合并将导致荒谬的更改冲突
  • 因为他已经在 git repo 中有代码并且有我认为他想保留的历史记录,最好的办法是查看基于镜像将他的更改重新定位到分支上。这样他就可以保留他的历史并获得共享的 1.5 历史。这将使 1.6 代码的合并更加容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多