获取Git服务器版本

时间:2014-08-11 17:20:09

标签: git github

如果我在服务器上没有shell访问权限,是否有获取git版本字符串的通用方法?

我在一个必须验证我使用的所有软件的环境中工作。如果我继续使用1.9.4多年,那么在将来的某个时候,是否有可能git-receive-pack或某些此类程序引入了重大变化?即。我的本地git版本停止工作一天。为了防止这种情况发生,我想立即知道服务器上的某些内容已经更新。

1 个答案:

答案 0 :(得分:1)

简短回答是“不”:如果您不控制(或有足够的访问权限)服务器,则无法阻止他们进行重大更改。即使您可以询问他们的版本,这也是正确的。我们只是假设你没有控制服务器,所以如果有办法在服务器上查询那里的版本,他们就可以撒谎。

也就是说,至少到目前为止,对git协议处理的所有更改都是以这样的方式完成的,即旧版本的git可以在较新版本中与新版本进行对话,反之亦然(见下文)。此外,虽然您无法获得特定的git版本,但您可以从协议支持标志中直接了解服务器。

请参阅this Git Pro book section,其中包括以下内容:

0088ca82a6dff817ec66f44342007202690a93763949 HEAD\0multi_ack thin-pack \
  side-band side-band-64k ofs-delta shallow no-progress include-tag

这些以空格分隔的字符串(multi_ackthin-pack等)标识可用的选项。例如,如果shallow没有出现,您可以告诉服务器版本早于git 1.5.0。这意味着,如果你有一个较浅的克隆(或想制作一个),因为你有一个较新的git,你将无法与服务器通信 - 但你会知道为什么,因为你的git会说“服务器不支持浅客户“。