Magento 1:改进我的模块开发工作流程(Modman,composer,git)


14

我已经想了很长时间,但是我找不到正确的方法来做。

所以基本上,我正在与6个不同的网站合作,它们都运行Magento CE 1.9.2+

在这些网站上,我使用的是我和与我合作的团队开发的一堆扩展程序(在这里我们谈论的是50多个扩展程序),这些扩展程序的代码存储在Bitbucket上。所以我不是唯一管理这些扩展的人,我们是3个人进行开发的人。

目前,当我想为其中一个扩展添加功能/修复错误时,这是​​我的工作流程:

  • 通过Modman在一个网站上安装扩展的最新版本
  • 修复错误/添加功能/测试
  • 手动将更改复制到包含我所有扩展名的本地文件夹中
  • 通过GIT从此扩展文件夹提交并推送到Bitbucket(每个模块1个Bitbucket存储库)
  • 然后可以通过Modman安装新版本的模块

重要说明:我在这里使用带有复制的modman,没有符号链接。

我最大的问题以粗体突出显示:我希望能够跳过此步骤,因为这是引起问题的主要原因(有时会忘记某些文件,错误的复制/粘贴,涉及人为的操作)。

因此,如何改善工作流程以摆脱此手动复制/粘贴步骤?我愿意在这里提出建议。


您是否尝试过Submodulesgit的功能?
Gopal Patel

为什么使用硬拷贝?使用符号链接,您应该只在modman文件夹下有一个git克隆。然后只需在适当位置进行编辑即可。
克里斯托夫在Fooman '17

@KristofatFooman我应该澄清一下。其中一名开发人员正在运行Windows,因此我们在符号链接方面遇到了问题^^
Raphael在Digital Pianism上2017年


1
关于Windows问题的@RaphaelatDigitalPianism
David Manners

Answers:


8

我经常采用以下与框架无关的方法。

  1. 签出您要编辑的模块 /path/to/my/module
  2. 为您的工作创建一个分支(从相关标签分支出来)。
  3. 将工作提交到该分支(不要推送)。
  4. 在您的项目中,将本地存储库定义为模块的本地副本。这样一来,您的项目就可以从LFS中提取未做的更改。

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. 然后,您可以要求作曲家需要您自己的特定开发部门(只要您的项目minimum-stability允许这样做)。

    composer require namespace/module dev-branch-name-here
  6. 您提交的/path/to/my/modulecomposer update namespace/module在项目,看到它安装和测试。

  7. 当您完成压扁您的提交并且推挤。

我发现这种方法适用于使用https://github.com/Cotya/magento-composer-installer的 M1模块,因为符号链接安装有时会很麻烦,并且在添加以前未符号链接的新目录或路径时会绊倒您由modman。

可能感兴趣的链接

调试

  1. 使用composer require namespace/module dev-branch-name-here -vvv看,你可以在本地使用的分支。

  2. 仔细检查minimum-stabilitydev在其中安装模块的项目中设置为。

  3. Your requirements could not be resolved to an installable set

通过在此处阅读Patrick Schwisow的评论发现。

如果其他软件包对要更改的软件包有要求,则您的开发分支可能无法满足这些要求(这将导致“您的要求无法解决为一组可安装的软件包”。)。要解决此问题,您可以对所有其他软件包都将其视为特定版本进行内联别名。

简而言之,您可以composer.json在开发时更新您的代码,使其强制为特定版本,使其显示为:

"namespace/module": "dev-branch-name-here as 1.2.3"

这里的另一个有趣的方法。感谢您的输入
拉斐尔(Raphael)在Digital Pianism上2017年

1
这个不错。我倾向于将path类型存储库用于我不会重复使用的项目模块,然后将git或packagist用于将要重复使用的模块。
David Manners

1
@DavidManners我将以上流程与satis结合使用。模块永久处于饱和状态,但是在测试并在本地运行之前,我不希望将任何东西推入主线。因此,它使用了上面的工作流程,然后推送并标记并等待satis将其提取。
路加·罗杰斯

@LukeRodgers,在此工作流程中,您根本不需要使用modman,并且所有模块文件都放置在magento文件中?(您的扩展名没有.modman文件夹)。我明白吗?
Mploy到

嘿@MployBy,我不直接使用modman。但是,我不确定Cotya / magento-composer-installer是否在后台使用它,已经有一段时间了,因为我设置了新的magento1模块。
路加·罗杰斯

6

我在这里使用带有硬拷贝的modman,没有符号链接。

有你的问题。如果您不能为您的车间部署更改此设置,请考虑在使用modman和符号链接的单独实例上处理共享扩展。

我将composer与AOE composer安装程序结合使用,将扩展存储库直接克隆到其中,.modman但是我想也可以使用modman从Git安装模块。无论哪种方式,您都可以直接在模块Git存储库中工作。


是的,正如我在评论中说的那样,原因是其中一名开发人员使用Windows和IIRC,我们在使用符号链接时遇到了一些问题
Raphael在Digital Pianism上2017年

6
哦,我没有看到。给那个开发人员一个虚拟机:)
Fabian Schmengler '02

4

所以我在这里的想法是,即使是Magento1,也要开始与作曲家合作。如果您有自己的packagist,那么由于aws和google cloud已经存在,现在管理起来并不难,或者您可以使用公共packagist。您可以在Magento1商店中“轻松”访问较新版本。

这意味着您可以发布新版本时composer update,它将为您自动进行复制过程。

通过composer 查看适用于Magento1的https://github.com/Cotya/magento-composer-installer

通过这种方法,如果您将其设置为在副本中复制,则还可以直接在供应商文件夹下的git存储库上工作.git,因此可以将更改推送回其存储库而无需单独检出。尽管请注意,您在这里必须格外小心,并确保知道您所在的分支,否则您可以删除代码(执行几次)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.