git 中有哪些不同的存储库格式版本(对于 core.repositoryFormatVersion 设置)?
我注意到 git core.repositoryFormatVersion
中的默认选项默认为 0,但是什么是“存储库格式版本”以及它们有何功能差异?
I noticed a default option in git core.repositoryFormatVersion
which defaults to 0, but what are "repository format versions" and what functional difference do they make?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是为了未来的兼容性——如果 git 开发人员发现有必要更改存储库在磁盘上存储的方式以启用某些新功能,那么他们可以使升级后的存储库的
core.repositoryformatversion
为 <代码>1。然后,知道该新格式的较新版本的 git 将触发代码来处理它,而不知道该新格式的较旧版本的 git 将优雅地错误“预期 git 存储库版本 <= 0,发现 1。请升级 Git”
。截至目前,定义或识别的唯一存储库格式版本是
0
,它表示 git 的每个公开版本都使用的格式。It's for future compatibility -- if the git developers ever find it necessary to change the way that repos are stored on disk to enable some new feature, then they can make upgraded repos have a
core.repositoryformatversion
of1
. Then newer versions of git that know about that new format will trigger the code to deal with it, and older versions of git that don't will gracefully error with"Expected git repo version <= 0, found 1. Please upgrade Git"
.As of now, the only repo format version defined or recognized is
0
, which denotes the format that every public release of git has used.git 2.7(2015 年 11 月)在新的
文档/技术/repository-version.txt
。请参阅 提交 067fbd4、提交 00a09d5 (2015 年 6 月 23 日)作者:Jeff King (
peff
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 fa46579,2015 年 10 月 26 日)现在,您可以定义“扩展”,并且使用 core.repositoryformatversion 作为“标记”来表明所述扩展的存在,而不必更改 Git 版本号本身:
文档摘录:
现在,这确实是所有发布版本号策略及其的原始方法semver 政策。
作为第一个扩展,您将拥有 git 2.7
preciousObjects
:该文档提到:
那是:
请注意,此
core.repositoryformatversion
业务已经过时了。真的老了。 提交 ab9cb76,2005 年 11 月,Git 0.99.9l。最初是针对数据库版本完成的:
Git 2.22(2019 年第二季度)将避免周围的泄漏
repository_format
结构。请参阅提交 e8805af(2019 年 2 月 28 日)和 提交 1301997(2019 年 1 月 22 日),作者:马丁·奥格伦 (``)。
(由 Junio C Hamano --
gitster
-- 合并于 提交 6b5688b,2019 年 3 月 20 日)使用 Git 2.28(2020 年第 3 季度),运行时本身可以自动升级存储库格式版本,例如在非浅层提取时。
请参阅 提交 14c7fa2、提交 98564d8, 提交01bbbbd,提交 16af5f1(2020 年 6 月 5 日),作者:李鑫 (
livid
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 1033b98,2020 年 6 月 29 日)警告:在 2.28-rc0 中,我们纠正了一个错误,即即使在版本 0 存储库中,某些存储库扩展也会被错误地接受(
extensions.*
命名空间中的这些配置变量应该在其存储库中具有特殊含义)版本号为 1 或更高),但这个变化有点太大了。请参阅 提交 62f2eca、提交 1166419(2020 年 7 月 15 日),作者:Jonathan Nieder (
artagnon
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 d13b7f2,2020 年 7 月 16 日)git 2.7 (Nov. 2015) adds a lot more information in the new
Documentation/technical/repository-version.txt
.See commit 067fbd4, commit 00a09d5 (23 Jun 2015) by Jeff King (
peff
).(Merged by Junio C Hamano --
gitster
-- in commit fa46579, 26 Oct 2015)You now can define "extensions", and use
core.repositoryformatversion
as a "marker" to signal the existence of said extensions, instead of having to bump the Git version number itself:Extracts from the doc:
Now that is really an original approach to all the release version number policy and its semver policy.
As a first extension, you will have with git 2.7
preciousObjects
:The doc mentions:
That is:
Note that this
core.repositoryformatversion
business is old. Really old. commit ab9cb76, Nov. 2005, Git 0.99.9l.It was done initially for the db version:
Git 2.22 (Q2 2019) will avoid leaks around the
repository_format
structure.See commit e8805af (28 Feb 2019), and commit 1301997 (22 Jan 2019) by Martin Ågren (``).
(Merged by Junio C Hamano --
gitster
-- in commit 6b5688b, 20 Mar 2019)With Git 2.28 (Q3 2020), the runtime itself can upgrade the repository format version automatically, for example on an unshallow fetch.
See commit 14c7fa2, commit 98564d8, commit 01bbbbd, commit 16af5f1 (05 Jun 2020) by Xin Li (
livid
).(Merged by Junio C Hamano --
gitster
-- in commit 1033b98, 29 Jun 2020)Warning: In 2.28-rc0, we corrected a bug that some repository extensions are honored by mistake even in a version 0 repositories (these configuration variables in
extensions.*
namespace were supposed to have special meaning in repositories whose version numbers are 1 or higher), but this was a bit too big a change.See commit 62f2eca, commit 1166419 (15 Jul 2020) by Jonathan Nieder (
artagnon
).(Merged by Junio C Hamano --
gitster
-- in commit d13b7f2, 16 Jul 2020)