Plone 清除所有旧CMF条件版本

Plone 清除所有旧CMF条件版本,plone,Plone,我们有一个巨大的网站,该网站的数据库应该为开发副本做好准备 如何删除所有内容项的所有旧历史记录版本?通过这种方式,我们可以大大减少传输到开发人员计算机所需的数据量 Plone 4.0我已经了解了Plone 3的详细信息(但请注意,我知道Plone 4对此做了一些更改) 在Plone 3.3中,所有历史都存储在portal_historiesstorage/repo对象中。这里有一个_shadowStorage子对象 我发现如果删除这个持久对象,它会在需要时从头创建 希望这对你有所帮助 转到por

我们有一个巨大的网站,该网站的数据库应该为开发副本做好准备

如何删除所有内容项的所有旧历史记录版本?通过这种方式,我们可以大大减少传输到开发人员计算机所需的数据量

Plone 4.0

我已经了解了Plone 3的详细信息(但请注意,我知道Plone 4对此做了一些更改)

在Plone 3.3中,所有历史都存储在portal_historiesstorage/repo对象中。这里有一个_shadowStorage子对象

我发现如果删除这个持久对象,它会在需要时从头创建

希望这对你有所帮助

  • 转到portal_purgepolicy并将数字设置为某个数字(我通常使用“3”至少保留一些历史记录)
  • 运行以下脚本:

    从日期时间导入日期时间
    从Products.CMFCore.utils导入getToolByName
    从Products.CMFEditions.utilities导入解引用
    policy=getToolByName(self.context,“portal\u purgepolicy”)
    catalog=getToolByName(self.context,“portal\u catalog”)
    对于计数,枚举中的brain(目录()):
    obj=brain.getObject()
    #仅清除旧内容
    如果对象已创建()<(日期时间()-30):
    obj,历史_id=取消引用(obj)
    policy.beforeSaveHook(history_id,obj)
    打印“已清除对象”+obj.absolute\u url\u path()
    

  • 以下是删除_shadowStorage的说明,如上面keul的提示所示:

    在调试模式下启动ZEO客户端:

      bin/client1 debug
    
    然后:

    del app.yoursiteid.portal\u historiesstorage.\u shadowStorage
    进口交易;commit()事务
    
    没有保修。不知道删除了什么。很明显,你已经摆脱了所有的历史记录。

    我发现(在我的案例中可能是RTFM的案例,但无论如何)直接打开Zope站点(比如)并按如下方式导航:

  • 管理页面
  • “控制面板”
  • “数据库”
  • “主要”

  • 引导我进入一个页面,该页面提供“打包”数据库并删除所有超过X天的历史记录。这真是太棒了

    测试后将与此合并:将此实用程序添加到CMFEditions并在ZMI某处公开它会很好。在旧Plone安装中,这个技巧确实帮助了我,在那里版本控制被滥用。我创建了一个脚本,帮助我清理:keul:如何使用该脚本删除所有内容(保持历史=0不做任何事情)@米克库塔马:零可能意味着“没有限制”。使用DateTime时,可能要设置的最早日期为hth 1901年1月1日。但这不会删除CMFEdition条目。这只会打包数据库。有两种不同类型的历史记录:基于CMFEdition的历史记录,如这里的首字母所示,以及ZODB历史记录,您正在使用“Pack”链接清除它。根据Alec Mitchell的说法,除去阴影存储只会擦除元数据,如果您需要擦除存储库中的条目,则必须执行其他操作;有关更多信息,请参阅。
      bin/client1 debug