gpt4 book ai didi

差异 sqlite 表的 Git 钩子(Hook)

转载 作者:太空狗 更新时间:2023-10-29 13:47:50 27 4
gpt4 key购买 nike

我在 Git 存储库中有一个 Sqlite 数据库。今天我想在两个不同的提交中做一个 View 的差异。我是这样做的:

$ sqlite3 -list file.sqlite "SELECT * FROM contact_list_detailed" >/tmp/newlist
$ git checkout 51c24d13c file.sqlite
$ sqlite3 -list file.sqlite "SELECT * FROM contact_list_detailed" >/tmp/oldlist
$ git checkout -- file.sqlite
$ diff /tmp/oldlist /tmp/newlist

它有效,如果我愿意,我可以编写脚本。但是有没有什么“好的”方法可以用钩子(Hook)来做到这一点?

最佳答案

Here是如何使用 git 的 textconv 功能来显示 sqlite 文件版本之间的差异。它只是进行转储,因此对于大型数据库来说可能效率不高。无需 Hook 。

该链接似乎不再可用,所以我改用存档版本。

Gist 是,在 git 属性文件(.gitattributes,或 .git/info/attributes)中,添加模式匹配以强制执行 sqlite3 差异(假设你的数据库文件有扩展名 .sqlite3):

*.sqlite3 diff=sqlite3

然后在你的 git 配置文件中(~/.gitconfig.git/config):

[diff "sqlite3"]
binary = true
textconv = "echo .dump | sqlite3"

如果您只想跟踪架构更改,请使用 .schema 而不是 .dump

关于差异 sqlite 表的 Git 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13271643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com