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 tag 和 odb 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(未发布)
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)
初始草案
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪一个,请了解有关 安装包 的更多信息。