sql - mercurial 或 git 的关系数据库后端

标签 sql database git mercurial fossil

我喜欢什么 fossil是它使用普通的旧 sqlite 来存储变更集、文件等。我可以使用它的命令行工具来查询存储库,但如果我想要它不支持的东西,我可以回退到编写 sql 查询。

Mercurial 和 git 更成熟,它们有更多的库,更有动力,但它们使用自己的存储库格式。我想知道是否有可能将 sqlite 作为他们的存储库后端。 (我知道有工具可以直接查询 mercurial 或 git repo,但 sql 似乎更容易。)

最佳答案

正如 Jefromi 所写,Mercurial 还使用自定义格式来实现高压缩和快速访问任何修订版。这是revlog format这是一种仅附加数据结构,它利用了 Mercurial 中变更集的不变性。

但是,如果您愿意,当然可以将这种存储格式替换为另一种格式。 Google did this when they put Mercurial on Bigtable对于 code.google.com。他们使用自己的后端格式的一个有趣结果是您在他们的 Web 界面中看不到任何修订号。在普通的 Mercurial 中,修订号(您可以使用的仅限本地的整数,而不是完整的变更集哈希)是修订日志中变更集的索引。如果变更集未存储在 revlog 中,则没有自然索引,因此 Google 不会向您显示修订号。

关于sql - mercurial 或 git 的关系数据库后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3521448/

相关文章:

sql - 在 SQL 查询中包含表名

mysql - 如何制作嵌套的 INSERT SELECT,我可以在其中使用以前选择的字段

MySQL - 按多条记录分类的COUNT散点图

sql - view中Where子句前的select语句处理

python - 从 python 访问 MySQL 数据库

node.js - 如何使用 git 建立基于组件的项目

node.js - npm install 返回 syscall spawn git 错误

git - CocoaPods `pod install` 错误 : cannot open FETCH_HEAD: Permission denied

php - 在 PHPMaker 10 中显示基于列而不是基于行的记录

mysql - 连接两个表并从结果中进行选择