跳转到主要内容

Postgresql数据库快照版本管理工具

项目描述

anybox.pg.odoo

此工具基本上管理当前数据库的版本化快照,模拟VCS工具(如init、commit、revert、log等)的常见工作流程。它最初是为快照Odoo数据库而创建的,但可以很容易地修改为通用。

安装

此工具适用于Python 2.7和Python 3.x。像任何正常的Python发行版一样安装,在virtualenv、buildout或系统范围内。当前唯一的依赖项是psycopg2 >= 2.5。

使用virtualenv的示例

$ virtualenv sandbox && source sandbox/bin/activate
$ pip install anybox.pg.odoo

使用方法

首先使用 odb -h 查看可用的命令。您将看到可用的命令

init                Set the current db
commit              Save the current db in a new revision
info                Display the revision of the current db
revert              Drop the current db and clone from a previous revision
log                 List all available revisions
purge               Destroy revisions
tags                List all tags
tag                 Tag a specific revision

首先使用 odb init 设置当前数据库

$ odb init demo8
Now revision 1

然后您可以使用 odb info 获取当前版本

$ odb info
database: demo8
revision : 1 (parent: 0)

使用 odb commit 提交当前数据库以创建快照和新版本

$ odb commit
Now revision 2
$ odb info
database: demo8
revision : 2 (parent: 1)
$ odb commit
Now revision 3
$ odb commit
Now revision 4

您可以使用 odb revert 回退到数据库的最后版本(父版本)

$ odb revert
Reverted to parent 3, now at revision 4

您也可以回退到任何以前的版本

$ odb revert 2
Reverted to parent 2, now at revision 4
$ odb info
database: demo8
revision : 4 (parent: 2)

您可以使用 odb tagodb tags 给版本打标签、回退到标签和删除标签

$ odb tag v1 2
$ odb tag v2 3
$ odb tags
v2 (demo8*3)
v1 (demo8*2)
$ odb revert v1
Reverted to parent 2, now at revision 4
$ odb tag -d v1

然后您可以使用 odb log 显示所有版本

$ odb log
demo8:
    revision: 4
    parent: 2
demo8*3:
    revision: 3
    parent: 2
    tag: v2
demo8*2:
    revision: 2
    parent: 1
demo8*1:
    revision: 1
    parent: 0

然后您可以清除除了标签之外的所有版本

$ odb purge keeptags

或清除所有版本

$ odb purge all

它的工作原理和污染

  • 它使用 PostgreSQL 的 CREATE DATABASE FROM TEMPLATE 功能

  • 它目前将版本信息存储在 Odoo 的 ir_config_parameter 表中(尽管这将在将来改变)。

  • 它期望通过 Unix Domain Socket 与 PostgreSQL 建立连接,当前用户被允许创建和删除数据库。

  • 它将当前数据库存储在 ~/.anybox.pg.odoo

接下来是什么?(待办事项列表)

  • 使用专用数据库来存储版本信息,而不是使用 ir_config_parameter

  • 实现 diff (#fear)

  • 改进数据库命名方案

贡献

Mercurial 仓库和问题跟踪器:[https://bitbucket.org/anybox/anybox.pg.odoo](https://bitbucket.org/anybox/anybox.pg.odoo)

使用以下命令运行测试

$ python setup.py test

变更日志

0.7(未发布)

  • 修复了在创建新事务之前设置自动提交的设置问题

  • 修复了 Python 3 中的错误

  • 实现图形选项 odb log --graph

  • 修复了 问题 #7,在复制数据库之前强制关闭已存在的连接

  • 实现了 问题 #4 limit 日志选项以限制显示的更改数量

0.6 (2014-11-02)

  • 修复了 Python 3 中的错误

  • 在提交和回退后移除了当前版本的标签和消息

0.5 (2014-10-19)

  • 支持 Python 3.1+

  • 支持 Postgres 9.1 及以下版本

  • odb purge keeptags : 清除除了标签之外的所有版本

  • 实现了提交消息

  • 回退现在检查源数据库是否存在(更安全)

0.4 (2014-10-19)

  • 实现了 odb log

  • 实现了 odb purge

  • 实现了 odb tag 和回退到标签

  • 实现了 odb tags

  • 将版本重命名为修订版本

  • 将 snapshot() 重命名为 commit()

0.3 (2014-10-16)

  • 保持与当前数据库相同的数据库以原地工作

  • 修复了版本控制和从 1 开始

  • 在回退操作期间断开连接

  • 删除了不必要的提示

0.2(2014-10-15 睡眠后)

  • 修复了打包

  • 修复了 revert 的行为

  • 允许不带参数回退

  • 改进了文档

0.1 (2014-10-15)

  • 初始草案

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解有关 安装包 的更多信息。

源分布

anybox.pg.odoo-0.7.tar.gz (10.2 kB 查看哈希)

上传于 来源

构建分发

anybox.pg.odoo-0.7-py3-none-any.whl (10.7 kB 查看哈希值)

上传于 Python 3