是否有任何方法通过编程方式检测(可能通过向服务器发送一些请求)存储库的类型(例如Git,SVN,Mercurial)?从URL中检测存储库的类型
我已经想过解析URL,但它似乎不可能。例如:
- 水银回购:bitbucket.org/bos/hg-tutorial-hello
- SVN:vegastrike.svn.sourceforge.net/svnroot/vegastrike/trunk
是否有任何方法通过编程方式检测(可能通过向服务器发送一些请求)存储库的类型(例如Git,SVN,Mercurial)?从URL中检测存储库的类型
我已经想过解析URL,但它似乎不可能。例如:
有ISN”这是明确做到这一点的一种方式。你可以使用一些试探法来确定哪一个可能是:
但是,在尝试克隆它之前,您不会真正知道它是哪一个。您可以执行HEAD操作(如果它是http/s站点),但这可能不一定正常工作 - 无论如何,如果您尝试使用这种方法,则会遇到失败的访问日志。请注意,某些服务器(如GitHub和BitBucket)可让您通过多种机制进行克隆(例如,将Git存储库作为Git仓库或SVN仓库签出)。
但是[SourceTree](https://www.sourcetreeapp.com/)呢?它在克隆对话框窗口中通过URL检查存储库类型。 –
如果提供HTTP或SSH存储库,它几乎可以肯定会尝试Git作为第一次尝试,并且如果缺少Git支持或Git文件,那么它将回退到Mercurial--除非上述其他提示中的其中一个提供了关于什么的概念结账。 – AlBlue
如果只检测这3种类型的回购:
git ls-remote $URL
返回true,如果$ URL指向一个Git回购hg id $URL
返回ID为提示如果$ URL指向Mercurual回购或错误代码255如果不是
您可以举一个例子,您寻找的信息不在URL中吗?当然,@JonathonReinhart, –
。 Mercurial repo:https://bitbucket.org/bos/hg-tutorial-hello。 SVN:https://vegastrike.svn.sourceforge.net/svnroot/vegastrike/trunk。这是我在网上找到的一些示例链接。我已经想过解析链接,但似乎不可能。 –
我会将这些例子添加到您的问题本身(而不是在评论中)。 –