17

我刚刚问了一个关于 git 的简单问题——git 存储库的向后兼容性如何?例如,我使用 git 1.6.4 和 svn2git ruby​​ 脚本创建了一个存储库,但我想把它放在运行 Debian Lenny 的机器上,它有 git 1.5.6.5。我仍然能够正确地与存储库交互吗?

4

2 回答 2

9

就信息的实际存储而言,它非常向后兼容,这就是您在这种情况下所担心的。我不是一个完全的专家,但我怀疑自从第一个稳定版本以来这已经改变了。

我能想到的唯一兼容性问题是,如果两个版本的 git 正在处理完全相同的存储库(而不是克隆),并且 .git/config 中设置的选项/别名在较新版本中有效但不是[完全] 在旧版本中实现......但即使那样,您也必须非常努力地尝试使用如此接近的版本。同样,这与 repo 中的实际信息无关,只是您用来管理它的命令。这就是 git 开发的地方。

于 2009-08-21T23:58:33.220 回答
8

git 存储库的布局几乎没有不兼容的更改;从某种意义上说,旧版本可能无法处理使用新版本创建的存储库,或者无法与新服务器进行交换(获取或推送)。

您应该检查 RelNotes(例如,从这里)以查找您使用的版本之间是否存在一些不兼容的更改。

这些不兼容的更改中的一些(可能是全部)是:

  • 子模块支持:在 git 核心中引入子模块支持之前的 git 版本将无法处理使用子模块的存储库(它不理解子树/gitlink 条目)
  • 打包引用:旧 git 版本无法通过 HTTP 从使用打包引用 ( .git/packed-refs) 的较新存储库中获取。与旧 git 相同,使用与打包了 refs 的新 git 相同的存储库
  • offset delta packfiles:旧 git 不理解 git packfile (ofs-delta) 的更新(更紧凑)版本。这对于获取和推送来说不是问题,因为服务器会发现客户端支持的功能。

我认为这些都不在 1.6.4 和 1.5.6 之间。

于 2009-08-30T15:29:29.770 回答