Git存储库向后兼容性

Ibr*_*him 16 git backwards-compatibility

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

Cas*_*bel 8

它在信息的实际存储方面非常向后兼容,在这种情况下你只是担心.我不是一个完全专家,但我怀疑自第一次稳定发布以来它已经改变了.

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


Jak*_*ski 7

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

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

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

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

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