1
12
对于Git,存储库格式是所有工作方式的基本组成部分。你得做很多工作才能改变这一点。 我没有读过任何Mercurial的资料,但我想情况并没有什么不同。 正如我在评论中建议的那样,我不太确定你为什么要这样做。为了让Git仍然能够拥有所有的优势,您必须将Git对象存储在您的sqlite数据库中。你仍然需要所有的低级的Git工具来访问和操作它们——你不会仅仅通过它们的sha1来查找blob和trees,然后自己完成其余的工作。(即使出于某种原因,您也可以通过在git对象目录中查找来轻松地完成这项工作。) 我的建议是,如果您发现您希望在Git中执行的某些操作不受支持,您可以熟悉一些管道命令,并了解如何将它们编写为脚本。Git确实公开了您可能需要的几乎最低级别的操作。 另外,如果你发现你想要做的一个特定的不支持的操作,并且找不到你需要执行的管道,或者使用实现它所必需的脚本,请在这里发布一个问题!没有理由仅仅因为不能使用SQL就陷入困境。 |
2
13
正如Jefromi所写,Mercurial还使用自定义格式来实现高压缩和对任何修订的快速访问。这就是 revlog format 它是一种仅附加的数据结构,利用了Mercurial中变更集的不可变性。 但是,如果您愿意,当然可以用另一种存储格式替换此存储格式。 Google did this when they put Mercurial on Bigtable 对于code.google.com。他们使用自己的后端格式的一个有趣的结果是,在他们的Web界面中看不到任何修订号。在普通的mercurial中,修订号(只能使用本地整数而不是完整的变更集哈希)是revlog中变更集的索引。如果变更集没有存储在revlogs中,那么就没有自然索引,因此google不会向您显示修订号。 |
3
7
使用libgit2后端是可能的: https://github.com/libgit2/libgit2-backends/blob/master/sqlite/sqlite.c 我没有做过任何测量,但是性能会有点问题。但是,它也更方便(整个repo历史的单个文件、经典的SQL查询语言等)。 |
4
1
对于git,您不能在官方二进制文件中使用不同的后端。但是,libgit2项目允许您使用不同的后端来存储数据库。但是,您必须构建所有要用于提交、合并、推送、拉取、重新平衡等的二进制文件。而且,您将无法使用正式的二进制文件修改存储库。你必须先把它推到标准回购。 |
charleslcso · 从开源克隆并推送到我的GitHub[重复] 1 年前 |
Itachi · 无法为python项目安装“DAWG”包 1 年前 |
Igor · git重置已删除目录上的头 2 年前 |
Robo · 撤消删除Git中被忽略的文件 2 年前 |
Ali EXE · 如何根据bat中命令的输出设置变量? 2 年前 |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
Siggi · 使用git移动文件时丢失历史记录 2 年前 |