与Magento一起使用Git的最佳实践?
我正在研究如何在与供应商库(在本例中是Magento)集成的同时,在我自己的定制代码回购协议中实现最佳工作。在我的情况下,我将不需要向供应商提供补丁(尽管这将是一个巨大的附带好处) 我已经研究了git子模块和git子树。我认为git子模块不能满足我的需要。Magento具有以下类型的树结构:与Magento一起使用Git的最佳实践?,git,magento,git-submodules,git-subtree,Git,Magento,Git Submodules,Git Subtree,我正在研究如何在与供应商库(在本例中是Magento)集成的同时,在我自己的定制代码回购协议中实现最佳工作。在我的情况下,我将不需要向供应商提供补丁(尽管这将是一个巨大的附带好处) 我已经研究了git子模块和git子树。我认为git子模块不能满足我的需要。Magento具有以下类型的树结构: /app /code /community * /core /local * /design /adminhtml /frontend
/app
/code
/community *
/core
/local *
/design
/adminhtml
/frontend
/base
/yourtheme *
/lib
/Zend
/Varien
/yourlib *
/js
/yourjs *
/varien
/mage
在单独的文件夹中使用git子模块似乎效果最好(例如,/是你的应用程序,/供应商/magento是子模块)。然而,由于这种程度的交织,子模块似乎不是一个好的解决方案。我错了吗
这就剩下git子树了。但是对于git子树,同样的核心假设(供应商分支,正如名称所暗示的,是子树)并不成立。Magento不是子树,而是我的项目适合的核心库。对吗
如果这两种git方法都不起作用,那么还有其他方法可以实现我想要实现的目标吗
我不愿意追求的最后一个选择是回购,然后我只在最新的供应商变更(从tarball中提取)上应用回购。我不愿意继续讨论这个问题,因为我觉得拥有供应商的日志信息(从中提取)将非常有助于对新更新进行排序,并找出影响我的更改。您的问题更多地是关于git的子模块与一般子树的比较。我想不出任何会影响比较的Magento细节。你很可能知道我会推荐哪一个,但我不确定你为什么需要首先合并 合并的最佳实践是避免合并,而Magento体系结构足够灵活,可以允许合并。遵循一个简单的规则集:
如果您的修改再次涉及JS->,请使用布局链接放置在JS或皮肤文件夹中的代码。您提到的那些方法中没有一种对我真正有效 目前,我正在使用以下.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论坛上提起这个话题,但也没有得到任何回复:
更新:
-值得一看
成为PHP的标准依赖关系管理工具,因此,在项目中使用它将获得更多优势
您不需要将扩展、主题、lib提交或分支到项目树中,但始终具有适当的版本和依赖项
谢谢。我想你在谈论不同的事情 邱亨的建议是完全正确的。您可以在git中完成所有这些,并且不需要子模块或子树 我的.gitignore文件和您的差不多,所以看起来不错 我在这里写了一篇关于我们如何使用git作为管理magento商店的团队的文章,也许它会对您有用: 类似棉被的工作流 这正是以前用棉被做的,现在用(在Git上),(在Hg上)或(在Bazaar上)做的 这样做的目的是维护一系列相互堆叠的修补程序,这些修补程序适用于SCM控制的文件版本(可能还会创建新文件,这对您来说也是如此)。在任何时候,您都可以完全弹出堆栈,更新上游代码,然后逐个重新打包所有补丁。如果它们都干净地应用,则会自动完成,如果没有,则在第一个出现故障的修补程序处停止该过程 纯吉特 以下内容认为您正在克隆Magento Git回购。如果他们不使用Git,您仍然可以首先将他们的历史转换为Git,例如使用 重基 Git使得从一个不同的起点重新应用历史的一部分变得很容易。因此,您也可以只克隆Magento,使用代码,在更新Magento时,从上一个clean Magento版本开始执行,然后在新的clean Magento版本上重新调整工作 基本上,您可以使用普通的Git工具来遵循Cutter的工作流 分支机构
另一种方法是简单地使用分支。你克隆了Magento的回购协议,从中分支,做你自己的事情,当你获取Magento的最新版本时,你合并了这两个分支。只是,考虑到你是一个Magento开发人员,在一个功能分支上工作,而这个分支永远不会进入主分支…我认为你可以使用modgit工具来实现这一点:
您可以使用modgit clone命令克隆一些Magento模块。这里有一个完整的示例:这里有一篇关于完美Magento/git工作流的有用博客文章:Sweet。那个