tl;dr:本地、git、ssh、http、https。它不支持,也从未支持 ftp、ftps 或 rsync。
注意:这都是从 v0.23.4 开始的。
libgit2 支持的传输机制列表可以在他们的“传输”部分找到。这些是高级传输算法。特定的网络协议是子传输。
其中,我们只关心local和smart(参见transport.c)。 local用于本地文件,如file:///home/foo/some_project. ssh-with-paths 是一个围绕 smart-ssh 的包装器,它允许您明确说明要使用哪些远程程序,而这些程序您可能永远不会使用。网络上的任何东西都使用smart.
的“智能”的协议是一个其中期望远程更不仅仅是一个文件服务器。它不必通过请求文件并在本地找出所有对象来完成所有工作以确定需要哪些对象,而是可以调用远程上的某些程序来更有效地完成这项工作。 这是对智能与愚蠢协议的讨论。
libgit2 支持哪些智能网络协议在它们的“智能”部分。
您可以在transport.c中更详细地了解这一点。
至于已弃用的协议 ftp、ftps 和 rsync,libgit2 不支持它们,您可以从它们的更改日志中看到它们从未支持它们。另外我不知道 libgit2 是否会支持哑协议。