libgit2 支持哪些传输协议进行克隆?

Sim*_*ews 5 libgit2

我正在编写一个程序,它可以使用 Git 克隆 URI 并在用户机器上克隆存储库。为此,程序需要知道什么时候可以继续克隆,什么时候需要放弃。git-clone手册页说:

Git 支持 ssh、git、http 和 https 协议(此外,ftp 和 ftps 可用于获取,rsync 可用于获取和推送,但这些低效且已弃用;请勿使用它们)。

libgit2 支持多少?

我知道至少他们支持HTTP、 HTTPS 和SSH但其他的呢?

Sch*_*ern 5

tl;dr:本地、git、ssh、http、https。它不支持,也从未支持 ftp、ftps 或 rsync。


注意:这都是从 v0.23.4 开始的。

libgit2 支持的传输机制列表可以在他们的“传输”部分找到。这些是高级传输算法。特定的网络协议是子传输。

  • 假的
  • 当地的
  • 聪明的
  • ssh-with-paths

其中,我们只关心localsmart(参见transport.c)。 local用于本地文件,如file:///home/foo/some_project. ssh-with-paths 是一个围绕 smart-ssh 的包装器,它允许您明确说明要使用哪些远程程序,而这些程序您可能永远不会使用。网络上的任何东西都使用smart.

“智能”的协议是一个其中期望远程更不仅仅是一个文件服务器。它不必通过请求文件并在本地找出所有对象来完成所有工作以确定需要哪些对象,而是可以调用远程上的某些程序来更有效地完成这项工作。 这是对智能与愚蠢协议的讨论

libgit2 支持哪些智能网络协议在它们的“智能”部分

  • ssh
  • http
  • https
  • 混帐

您可以在transport.c中更详细地了解这一点。

至于已弃用的协议 ftp、ftps 和 rsync,libgit2 不支持它们,您可以从它们的更改日志中看到它们从未支持它们。另外我不知道 libgit2 是否会支持哑协议。