我喜欢什么 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/