使用git进行多个扩展开发时的正确策略

时间:2012-01-25 22:50:01

标签: git magento repository

我已经完成了与git相关的问题而且我无法下定决心。

我有很多扩展,我已经开发了,我想从svn转移到git,以便能够使用更好的分支和组织。

我为Magento开发了扩展程序,扩展部分不在1个文件夹下,而是分布在文件夹结构中。

我的扩展程序包含以下文件夹中的文件:

  • /应用程序/代码/小区/ myNameSpace对象
  • /应用/设计/前端/碱/默认/布局/ myNameSpace对象
  • /应用/设计/前端/碱/默认/模板/ myNameSpace对象
  • / app / etc / modules / skin / frontend / base / default / css / mynamespace
  • /皮肤/前端/碱/默认/ JS / myNameSpace对象

这些文件夹也包含其他扩展名的文件。

我希望能够独立开发和测试扩展。我知道我可以使用分支/更改或功能,这是伟大的。

虽然我希望能够检查它们/扩展名,这意味着只提取那些属于特定扩展名的文件。

我可以执行以下操作吗?

  • 将每个扩展名放到它自己的存储库中?
  • 将每个扩展嵌入到包含主magento代码的超级存储库中,以便可以使用子树或子模块测试扩展名吗?

这种方法会起作用吗? 还有其他我不知道的方式吗?

提前多多感谢。

已编辑:

我应该创建一个EMPTY REPO,然后将空仓库分支到与分机一样多的分支。 那么我应该能够将代码合并回master,并在各个分支上进行开发。在这种情况下,当向主人添加东西后我需要一个新的空分支用于新的扩展时会发生什么?我可以创建一个空分支和分支吗?这甚至可能吗?

谢谢你们,我接近一个好的解决方案。

4 个答案:

答案 0 :(得分:1)

如果每个扩展程序独立于另一个扩展程序,您可以将每个扩展程序保存在一个单独的分支中(而不是按照您的建议将其保存在自己的存储库中)。

e.g。如果您开发了3个扩展,那么您的git树中将有四个开发分支:

master
extn1
extn2
extn3

每次magento代码更改时,您将其拉入master,然后在master的最新更改之上重新设置三个开发分支。

如果你想用它们全部测试,只需创建一个新的测试分支并将master,extn1,extn2和extn3合并到其中。

答案 1 :(得分:0)

答案很简单,我想NomadCoder提出了解决问题的好方法。我的建议是建立发展部门和发布部门,这将有助于指导工作流程。由于合并分支很容易,它将有助于您的工作流程透明。这里列出了您可能会在您的案例中找到方便的git代码

Git Brushup

答案 2 :(得分:0)

如果你的模块彼此完全无关,我会在他们自己的存储库中创建它们。出于测试目的,在其自己的独立文件夹中创建一个空白安装,无论您希望开发哪种版本的Magento。然后创建符号链接到你在其中适当位置提到的5个文件夹。

对于测试开发创建一个仅包含该存储库内容的项目,但由于没有主要源的开发令人困惑,大多数IDE允许您包含来自其他文件夹的代码,因此请添加您正在开发的Magento的任何版本测试,以便您可以轻松地参考代码库。

现在你应该可以在工作时进行测试,分发模块可以是git导出和压缩内容的简单案例。然后你有一个像任何其他分布式Magento模块一样的简单zip文件,没有Magento核心文件。

我实际上刚刚开始使用基于phing的构建工具来简化Magento Extension的开发(你可以在https://github.com/pocallaghan/mephing找到它),但它处于早期阶段并且目前缺少任何文档。

答案 3 :(得分:0)

是的,这可以完成,也是我为扩展开发所做的事情。我实现这一目标的方法是使用以下步骤:

  1. 为我开发的每个扩展程序创建一个repo
  2. 克隆1回购到我的Magento安装
  3. 将克隆的文件合并到Magento中,然后将.git文件放在我的Magento的根目录中。我现在可以从此扩展程序中拉/推
  4. 接下来,我在Magento .git%s的根目录中重命名.git文件,其中%s是表示扩展名的2个字符的字符串。
  5. 接下来,将第二个扩展回购克隆到Magento。
  6. 重复步骤3到6,直到所有扩展都在Magento
  7. 在此之后,我在Magento安装的根目录中有以下git文件:

    1. .gitwp
    2. .gitbp
    3. .gitwps
    4. .gitas
    5. 现在,我可以同时处理所有项目。例如,如果我想从WP项目中推送我的更改,我可以运行以下命令:

      mv .gitwp .git
      git push origin master
      mv .git .gitwp
      

      使用上述系统,我可以轻松处理同一Magento环境中的所有扩展,同时保留单独的Repository。

      我希望这会有所帮助