【问题标题】:Git repository backwards compatibilityGit 存储库向后兼容性
【发布时间】:2009-08-21 23:43:54
【问题描述】:

我刚刚问了一个关于 git 的小问题 - git 存储库的向后兼容性如何?例如,我使用 git 1.6.4 和 svn2git ruby​​ 脚本创建了一个存储库,但我想将它放在运行 Debian Lenny 的机器上,该机器具有 git 1.5.6.5。我还能与存储库正常交互吗?

【问题讨论】:

    标签: git backwards-compatibility


    【解决方案1】:

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

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

    【讨论】:

    • 好吧,我知道在早期的 1.5 版本中,存储库格式已更改,但我想仅此而已。谢谢,我可能可以继续我的工作了。我想知道,gitosis 是否会在旧版本中出现问题?我想在这个新的 Lenny 服务器上设置 gitosis。我想它应该能够接收推送和正常的东西。
    • 有些东西在 1.5 中发生了变化,但在这里看看它们是多么谨慎:kernel.org/pub/software/scm/git/docs/RelNotes-1.5.0.txt 更改默认设置的东西,至少从 1.4.3 版本开始工作。
    • 哈!用 +1 摧毁你 666 的邪恶声誉!
    【解决方案2】:

    git 存储库布局几乎没有不兼容的更改;不兼容是因为旧版本无法处理使用新版本创建的存储库,或者无法与新服务器进行交换(获取或推送)。

    您应该检查 RelNotes(例如来自 here),以了解您使用的版本之间是否存在一些不兼容的变化。

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

    • 子模块支持:在 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 之间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多