如果我在服务器上没有shell访问权限,是否有获取git版本字符串的通用方法?
我在一个必须验证我使用的所有软件的环境中工作。如果我继续使用1.9.4多年,那么在将来的某个时候,是否有可能git-receive-pack或某些此类程序引入了重大变化?即。我的本地git版本停止工作一天。为了防止这种情况发生,我想立即知道服务器上的某些内容已经更新。
答案 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_ack
,thin-pack
等)标识可用的选项。例如,如果shallow
没有出现,您可以告诉服务器版本早于git 1.5.0。这意味着,如果你有一个较浅的克隆(或想制作一个),因为你有一个较新的git,你将无法与服务器通信 - 但你会知道为什么,因为你的git会说“服务器不支持浅客户“。