进行Magento更新的最佳做法?

Ale*_*lex 9 php magento

进行Magento更新的最佳实践是什么(Magento安装维护不当).

我想到如下的事情:

  • 看看app/code/local中的完全覆盖模块 - 将文件与旧版本进行比较,并将它们转发到新的Magento版本
  • 比较模板
  • 比较布局XML文件(如果它们被直接复制到自定义主题文件夹,并且没有使用仅包含真实更新的单个layout.xml)
  • 将重写类的方法与原始类的方法进行比较

主要问题是:在旧的,维护不良的Magento安装中对文件进行区分时,您永远不会知道复制的原始文件的版本.有时我试着通过查看文件评论中的Magento版权来识别旧版本.

为避免更新期间的麻烦,我们通常会执行以下操作:

  • 避免重写,改为使用事件
  • 如果需要重写,请尝试不复制代码,但调用parent :: method()以仅保留覆盖类中的必要功能
  • 如果需要复制代码,请使用标记注释,例如 [Mycompany BEGIN] ... [Mycompany END]
  • 不要复制整个布局文件,而是使用仅更新的单个layout.xml.

但如果不采取这些预防措施,如何进行更新?

Ant*_*n S 12

正如其他人已经注意到的那样,关键在于使它与清洁安装相媲美,所以这就是我在版本控制的帮助下做的事情.

  1. 让自己成为目前正在使用的Magento的干净版本,不要忘记让它具有可比性.或者使用magento的现有git镜像(参见更多http://blog.speedupmate.com/post/4063307705/magento-git-mirror)

  2. 建立一个基于1.的主回购,并在手边

    在评论中提问:你的最终目标是拥有一个干净的核心,其中包含ggent中存在于magento安装文件中的所有文件.这是必需的,因此您可以将所有内容与干净安装进行比较.管理核心更改,核心文件树(现有的,不存在的,添加的文件).您可以使用.gitignore处理异常(不包括媒体,缓存,所有具有服务器特定范围local.xml .htaccess的fiels).我发现很容易将Magento核心文件移到不同的(非公共)目录(如http://blog.speedupmate.com/post/9992573819/poor-mans-multisite-setup-for-magento所述)给我一个代码状态,其中.htaccess从不在升级时发生冲突.我也从不在版本控制,缓存和magento生成的所有临时文件中包含媒体.这将保证您清除升级路径,因为您可以禁用所有升级时间.稍后比较代码将为您提供概览所需的范围,您可以估计需要多长时间来比较更改的部分并升级.

  3. 现在你的现有网站和git配置到位(为了使它具有可比性)git init在你的代码库上做一个并将所有内容添加到git那里,这将覆盖你的git配置并使每个文件具有可比性(相同的换行符,空格等)然后修复文件权限是一样的.之后,您可以从您的站点中删除.git文件夹,因为您只使用git来创建可比较的文件.

    在评论中提到:这里的要点是让git为你工作,比如将所有行结尾转换为unix样式并忽略空格,你可以在理论上忽略权限,但这没有用(格式化在这里有点,所以\表示换行符命令之间

    git config core.autocrlf input \ git config core.eol lf \ git config apply.whitespace nowarn

    现在,如果你这样做git init 并添加这些配置并将所有内容添加到git,那么在提交阶段git将替换所有的Windows行结尾和所有垃圾,以统一和可比的风格.请注意,zend编码标准建议使用unix样式行结尾,但是您也会看到Zend库不符合其自身标准的文件.这里的关键点是你需要你的文件可以比较你最小化你必须做的差异负载.git为您格式化了所有错误的安装文件后,您将删除.git文件夹.Git仅用于在此步骤中自动化"使事物具有可比性的过程",而不是其他任何东西

  4. 根据您在1中的主仓库检查您的测试存储库并检查您当前所在版本的分支,并将其命名为"testsomething"或任何您需要的

  5. 从该checkout文件夹中删除所有内容并仅保留.git,使其为空,但版本控制仍然存在.它将处于状态,就像所有内容都被删除一样,这一点很重要,因为你会知道你的坏网站上可能删除了哪些文件.

    在评论中提问:我通常添加空格忽略git config(本地或全局范围可用)并让git为我处理.在团队工作时,我们总是同意基于Zend的标准:4个空格用于制表符,unix样式行结尾和3中提到的git配置变量.如果涉及构建脚本,我们使用提交钩子进行代码格式化和验证.

  6. 将所有文件移动到您的空目录(请注意,您已经从现有网站中删除了.git目录,使其具有可比性),然后从您的magento安装(它们现在可以比较)并运行一个git status > changes.txt.此文件现在列出您所拥有的所有差异,您拥有的任何新文件,任何已删除,重命名等文件,以及您当前所使用的干净Magento代码的"快速安装" 文件.

    根据评论解释:我通常这样做 git status --porcelain

  7. 有一个.gitignore文件,以帮助您丢弃local.xml var/*或您不需要版本控制的每个文件/目录,以及.DS_Store,.Thumbs.db和您从git创建的ide项目文件.您不需要版本控制中每个服务器上不同的所有媒体和缓存文件和文件.

从那里你应该仔细概述该列表,并根据该列表你应该:

  • 将每个核心更改移动到app/code/local /并将更改的文件签出到其原始状态(保留复制的文件并丢弃核心中的更改git checkout filename)
  • 将每个更改的核心模板和布局文件移动到您自己的主题文件夹,并将更改的文件签出到其原始状态
  • 恢复或迁移.htaccess更改或决定是否需要保留或丢弃

现在你仍然处于糟糕状态,但你现在是:

  • 基于清洁核心
  • 基于单独分支中的版本化主树

现在,您可以受益于版本控制,可比较和基于您的主分支的单独分支,其中包含Magento的可合并版本.所以让我们尝试升级,这是100%成功的关键点.

  1. 第一步将禁用您现在已分离到app/code/local/Mage /并分离主题的所有"废话".如果您的核心是明确的并且主题可以被禁用,则您没有自定义代码干扰升级过程.所以继续禁用:

    • 所有本地扩展和自定义社区扩展,将它们移出app/etc/modules /到temp文件夹,让它成为app/etc/inactive/
    • 禁用自定义主题并启用base/default /
    • 这是你在可比状态下的好处.你知道什么是不同的,你可以禁用它并根据它进行诊断
  2. 现在,如果你的repo标记或分支中的主树中的所有主要版本,那么获得更高的版本只是一个命令:git merge"magento-vhateverthenextversionis"

    • 在执行此操作后,"git status> changes.txt"将为您提供版本之间所有已更改文件的列表
    • 在浏览器上执行该站点将执行升级,因为您处于默认主题并且没有激活自定义,它将像魅力一样执行
    • 按版本重复升级版本并通过在测试分支中标记来保存代码状态,或者根据现有测试分支为每个版本创建新分支,这样就可以为已升级的每个magento版本保存干净状态
    • 再次额外的奖励是,如果你使用版本控制,你也将摆脱新版本丢弃的文件,你可以轻松删除它们
  3. 如果您已经将2.到您想要的magento版本迭代到最新版本,那么现在是时候吃掉你继承的"s*it"并执行以下操作:

    • 分析您拥有的所有扩展,看看它们是否可以升级,如果您可以升级并打开,看看它们是否可以使用默认主题
    • 在app/code/local/Mage中以app/code/local/Mage的新形式对应每个核心重写.你可以使用像winmerge.org这样的diff工具,或者逐个更改(你喜欢的操作系统和工具)或者整个文件夹
    • 您的模板和覆盖的模板或布局也是如此.COmpare to original并将您的更改合并到新的基本模板并摆脱旧的DOM
    • 逐个打开主题更改和扩展并进行调试
  4. 如果你达到这一点,那么你已经完成了大量的工作,取决于安装是多么糟糕,可能需要数天.但是现在你有一个干净的magento核心,它是版本控制的,分离的合并和概述的覆盖,以及可以禁用的单独主题中的所有东西.

  5. 有趣的是,如果magento的下一次升级可用,您可以吹口哨并将其添加为与主树相当,并合并更改,了解更改内容并明确了解概述和测试的范围.


Jos*_*ton 0

我要做的第一件事是将站点复制到开发环境。现在对其进行备份,以便您可以在需要时随时恢复。同样在这一点上,我会将实时站点置于代码锁定状态。除非绝对必要,否则不要对代码进行更多更改(如果有更改,则必须在新的开发环境中复制它们)

现在您已经拥有了可供您使用的网站的安全副本,现在乐趣就开始了。

我要做的第一件事就是下载您正在运行的 Magento 库存版本的副本。在 /app/code/core 上对库存版本和您当前拥有的版本进行比较。这会告诉你你们的差异是什么。我会尽力维护您当前拥有的所有功能,同时使核心恢复正常。

希望此时您已经安装了非常干净的 Magento。您可以考虑将其推回实时服务器,但我有一种感觉,您可能必须做很多事情才能做到这一点,因此这可能不是一个可行的选择。

现在,我将对开发站点进行单独的备份,以便您可以在需要时返回到这一点。

现在,我将尝试在开发站点上进行升级。希望一切顺利,并且您在升级时没有任何问题。如果不这样做,则进行必要的更正并从那里继续。

此时,您应该拥有一个随着升级而稳定的代码库。再次实时备份(只是为了安全起见),推送新代码,并希望一切顺利。