我正在研究如何在自己的repo中最好地使用自定义代码,同时与供应商的库(在本例中是Magento)集成。在我的例子中,我不需要向供应商推送补丁(尽管这将是一个很大的附带好处)。
我已经研究了git子模块和git子树。我不认为git子模块能满足我的需求。Magento具有以下类型的树结构:
/app
/code
/community *
/core
/local *
/design
/adminhtml
/frontend
/base
/yourtheme *
/lib
/Zend
/Varien
/yourlib *
/js
/yourjs *
/varien
/mage
在单独的文件夹中使用git子模块似乎效果最好(例如,/是你的应用程序,/vendor/magento是子模块)。然而,由于这种程度的相互交织,子模块似乎不是一个好的解决方案。这一点我说错了吗?
这就给我留下了git子树。但是对于git子树,相同的核心假设(供应商分支,顾名思义,就是一个子树)并不成立。Magento不是一个子树,而是我的项目所在的核心库。对吗?
如果这两种git方法都不起作用,有没有其他我应该知道的方法可以实现我正在尝试实现的目标呢?
我不愿意追求的最后一个选项是有一个回购,然后我只需应用于最新的供应商更改(从tarball中拉入)。我不愿意追求这一点,因为我觉得拥有供应商的日志信息(从https://github.com/magentomirror/magento-mirror中提取)将对整理新的更新和找出哪些更改对我有很大帮助。
发布于 2012-03-02 05:45:49
我认为你可以使用modgit工具来做这件事:https://github.com/jreinke/modgit你可以用modgit clone命令克隆一些Magento模块。这里有一个完整的例子:http://www.bubblecode.net/en/2012/02/06/install-magento-modules-with-modgit/
发布于 2011-03-10 14:32:20
你提到的那些方法对我来说都不管用。
目前,我正在使用pear安装和管理核心模块和社区模块的升级,并使用以下.gitignore文件将整个magento结构提交到git存储库:
# Dynamic data that doesn't need to be in the repo
/var/*
/media/*
/downloader/pearlib/cache/*
/downloader/pearlib/download/*
/app/etc/use_cache.ser
local.xml
并使用以下shell命令保留空目录:
for i in $(find . -type d -regex ``./[^.].*'' -empty); do touch $i"/.gitignore"; done;
我想过的另一个想法是尝试一个供应商分支模型,但我担心这会增加额外的麻烦,特别是在一些大型依赖树的情况下,即为了真正的效率,它必须集成在pear级别上,即每个下载的模块必须自动分支,所以,目前看来只使用付费扩展是很好的。
我试图在magento论坛上发起这个话题,但也没有得到任何回复:http://www.magentocommerce.com/boards/viewthread/78976/
更新:
Magento Composer Installer -值得一看。
Composer正在成为标准的依赖项管理工具,因此,在项目中使用它将获得更多的好处。
你不需要提交或者分支扩展,主题,库到你的项目树中,但是总是有合适的版本和依赖项。
谢谢。
发布于 2011-06-10 04:58:13
我想你说的是不同的东西。
Yauhen的建议完全正确。您可以在git中完成所有这些操作,并且不需要子模块或子树。
我有和你一样的.gitignore文件,所以看起来不错。
我写了一篇关于我们如何使用git作为一个团队来管理magento商店的文章,也许它会对你有用:
https://stackoverflow.com/questions/4564622
复制相似问题