Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用git进行多扩展开发时的正确策略_Git_Magento_Repository - Fatal编程技术网

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

使用git进行多扩展开发时的正确策略,git,magento,repository,Git,Magento,Repository,我已经完成了与git相关的问题,但我还没有下定决心 我已经开发了许多扩展,我想从svn迁移到git,以便能够使用更好的分支和组织 我为Magento开发扩展,其中扩展部分不位于1个文件夹下,而是分布在整个文件夹结构中 我的扩展名在以下文件夹中包含文件: /app/code/community/mynamespace /app/design/frontend/base/default/layout/mynamespace /app/design/frontend/base/default/tem

我已经完成了与git相关的问题,但我还没有下定决心

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

我为Magento开发扩展,其中扩展部分不位于1个文件夹下,而是分布在整个文件夹结构中

我的扩展名在以下文件夹中包含文件:

  • /app/code/community/mynamespace
  • /app/design/frontend/base/default/layout/mynamespace
  • /app/design/frontend/base/default/template/mynamespace
  • /app/etc/modules/skin/frontend/base/default/css/mynamespace
  • /skin/frontend/base/default/js/mynamespace
这些文件夹都包含来自其他扩展名的文件

我希望能够独立开发和测试扩展。我知道我可以将其与分支/更改或功能一起使用,这非常好

虽然我希望能够签出它们/扩展名,这意味着只有那些属于某个扩展名的文件才会被提取

我能做以下事情吗

  • 是否将每个扩展放在自己的存储库中
  • 将每个扩展嵌入包含主magento代码的超级存储库,以便可以使用子树或子模块测试扩展
这种方法会奏效吗? 还有其他我不知道的方法吗

先谢谢你

编辑:

我应该创建一个空回购协议,然后将空回购协议分支到尽可能多的分支。 然后我应该能够将代码合并回master,并在各个分支上进行开发。在这种情况下,当向主控添加内容后,我需要一个新的空分支来进行新的扩展时会发生什么?我可以创建一个空的分支并创建该分支吗?这可能吗


谢谢大家,我觉得我离一个好的解决方案越来越近了。

如果每个扩展彼此独立,您可能可以在一个单独的分支中维护每个扩展(而不是像您建议的那样维护自己的存储库)

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

master
extn1
extn2
extn3
每次magento代码更改时,您都会将其拉入master,然后在master中最新更改的基础上重新设置三个开发分支的基础


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

答案非常简单,我想NomadCoder提供了解决问题的好方法。我的建议是设立开发部门和发布部门,这将有助于指导工作流程。由于合并分支很容易,这将帮助您的工作流程透明。这里是一个git代码列表,您可能会发现它在您的案例中非常有用


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

对于测试开发,创建一个只包含该存储库内容的项目,但由于没有主源代码的开发容易混淆,大多数IDE允许您包含来自其他文件夹的代码,因此请添加要开发测试的Magento的任何版本,以便您可以轻松地引用代码库

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


实际上,我刚刚开始使用一个基于phing的构建工具来简化Magento扩展开发(您可以在中找到),但它还处于早期阶段,目前还没有任何文档。

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

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

  • .gitwp
  • .gitbp
  • .gitwps
  • 吉塔斯先生
  • 现在,我可以同时完成所有项目。例如,如果我想从WP项目推送我的更改,我可以运行以下命令:

    mv .gitwp .git
    git push origin master
    mv .git .gitwp
    
    使用上述系统,我可以轻松地在同一个Magento环境中处理所有扩展,同时保留单独的存储库


    我希望这能有所帮助

    嗨,谢谢你,这似乎是一个简单的解决方案,没有复杂的子树。我可以只保留属于分支中扩展名的文件吗?还把它和主人合并?由于我不想将所有与magento相关的文件保存在每个分支中,这样做行吗?如果每次主控更改时都重新设置基础,您将丢失开发历史,并且永远无法复制代码的旧版本。这正是重新设定基准的错误理由。在这种情况下,你真的应该合并而不是重定基址。@Istvano git不会“浪费”任何空间,如果这是你所担心的。您的分支将包含对master中公共代码的引用(直到您对其进行修改)。@DietrichEpp Right,“合并”与“重基”之争。如果OP真的要向上游magento提交这些扩展,那么