Git存储库向后兼容性

时间:2009-08-21 23:43:54

标签: git backwards-compatibility

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:7)

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

您应该检查RelNotes(例如来自here)以查找您使用的版本之间是否存在某些不兼容的更改。

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

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

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