有没有办法以编程方式检测(可能通过向服务器发送一些请求)存储库的类型是什么(例如Git,SVN,Mercurial)?
我已经考虑过解析网址,但似乎不可能。例如:
答案 0 :(得分:2)
没有办法明确地做到这一点。您可以使用一些启发式方法来确定它可能是哪一个:
但是,在尝试克隆它之前,你不会真正知道它是哪一个。您可以执行HEAD操作(如果它是一个http / s站点),但这可能不一定有效 - 并且无论如何,如果您尝试此操作,您将无法访问日志。
请注意,某些服务器(如GitHub和BitBucket)将允许您通过多种机制进行克隆(例如,将Git存储库检出为Git存储库或SVN存储库)。
答案 1 :(得分:1)
如果您只需检测这3种类型的回购:
git ls-remote $URL
返回true
如果$ url指向Mercurual仓库,则hg id $URL
会返回提示ID,否则会返回错误代码255