Python 开发整个Zope&;git中的Plone应用程序(分散且无ZMI)

Python 开发整个Zope&;git中的Plone应用程序(分散且无ZMI),python,git,plone,zope,zodb,Python,Git,Plone,Zope,Zodb,我们公司几乎没有Zope&Plone项目,直到今天,我还是唯一一个通过ZMI或ZopeEdit开发所有变更的开发人员。我们的公司正在成长,所以我需要开始与其他开发人员合作,这可以帮助我开发特性和解决项目中的bug。这意味着不再可能使用ZMI,但每个开发人员都需要在不影响其他人工作的情况下进行和测试自己的更改,并使用git repo中的git merge将自己的更改粘贴到生产环境中 我需要将开发转移到git——这意味着我需要开始跟踪git中的所有门户文件和设置 我认为我需要将整个项目从ZODB/Z

我们公司几乎没有Zope&Plone项目,直到今天,我还是唯一一个通过ZMI或ZopeEdit开发所有变更的开发人员。我们的公司正在成长,所以我需要开始与其他开发人员合作,这可以帮助我开发特性和解决项目中的bug。这意味着不再可能使用ZMI,但每个开发人员都需要在不影响其他人工作的情况下进行和测试自己的更改,并使用git repo中的git merge将自己的更改粘贴到生产环境中

我需要将开发转移到git——这意味着我需要开始跟踪git中的所有门户文件和设置

我认为我需要将整个项目从ZODB/ZMI(包括模板、脚本、sql方法、属性如portal_属性或portal_javascripts等)移动到文件系统,并在此文件系统上运行git。在下一步中,每个开发人员都可以安装自己的pure Plone实例、从git中提取源代码和设置、创建自己的分支、进行更改、测试、提交、推送、代码审阅

我的问题是:有没有办法做到这一点,并使用git启动众所周知的快速开发过程?支持ZODB,比如将内容/设置“实时迁移”到文件系统或从文件系统迁移?有没有办法告诉Zope从文件系统加载一些包含内容/设置的文件夹,而不是只从ZODB加载

我知道有一种叫做鸡蛋的东西,但是有可能将上面提到的所有类型的文件移动到单独的鸡蛋中吗

谢谢你的帮助。

你可以看看
在那里,您可以找到如何创建包(egg)。它的源代码可以添加到git中。您可以在构建期间使用mr.developer签出git存储库

到目前为止,您的公司所遵循的方式是Plone开发的“旧方式”,但这是一种不受欢迎且令人沮丧的方式

如今,ZMI仍然可以用于“快速而肮脏”的修复,但通常必须尽快删除存储在DB中的这些更改(并移动到实际代码中)。这在Plone 2.0上已经是可能的了! 更重要的是:每一个新的Plone版本都会降低ZMI的能力(例如:在Plone 2.1之前,你可以从ZMI做很多事情,从Plone 2.5开始,一些用户界面元素是无法修改的TTW)

所以:你的问题的答案是“是”。Plone可以(必须)从文件系统读取代码,并且该代码可以存储在VCS上(可以是git svn,…)

所有这些信息都可以在中找到

  • 为现代Plone创建新的Plone包?使用
  • 在构建中自动集成VCS?使用开发者先生
如果您今天从一个通过ZMI开发的项目开始,您可能必须将代码从ZMI模式转换为文件系统模式。 这可以手动完成;使用Zope外部编辑器更简单

还有一个非常旧的插件()用于将皮肤内容刷新到文件系统,但我担心它在最近的Plone上无法工作,因此它不支持SQL方法之类的东西(如果您正在使用它们)。

您可以使用它来创建PloneAddon。对于MySQL,您可以使用。将此软件包添加到“鸡蛋”部分的构建中。
然后您可以在插件中编写自己的MySQL语句。我知道重新实现是昂贵的,但你将来有更多的控制权。

我知道用python开发功能需要鸡蛋,但是我如何将模板、sql方法和权限从ZMI移动到鸡蛋?例如:我在文件夹结构/training/test/check/中有模板索引\u html,它在/sql/training\u check中使用sql方法。如何将这些文件移动到egg,并且在调用特定URL时仍然可以在模板和显示模板中使用sql方法?从ZODB内部手动迁移内容的最简单和建议的方法是什么(树结构页面模板、sql方法、py脚本-所有链接在一起的内容)?我们希望避免注册大量视图。最好是保持内容的结构,否则就需要对代码进行大的修改。