如果您只是在寻找与 GIT 交互的 .NET 库,请尝试GitSharp或nGit。GitSharp的源代码也可能很有用,因为您似乎是 ac# 开发人员并且 GitSharp 不是自动移植。否则:
(如上面的评论所示),关于该协议的文档并不容易找到。幸运的是,Git 使协议的逆向工程变得容易,而且应该不会太难。
较新的 Smart-Git 协议现在向 GET http 请求添加了另一个参数,较旧的服务器将忽略(早于 1.6.6)并将导致较新的服务器切换到多发布模式。此时较新的服务器为客户端构建了一个自定义包文件,其中仅包含客户端需要的文件。
为了准确地对协议部分发生的事情进行逆向工程,您可以使用环境变量:
SET GIT_CURL_VERBOSE=1
启用此功能后,Git 将为它进行的每个调用输出 HTTP 请求和标头,并且还将为每个响应输出 HTTP 状态代码和响应标头。您还可以使用Fiddler之类的工具来查看正在发生的所有 http 流量。为此,您必须使用第二个 Git 环境变量来强制 GIT 通过 http 代理:
SET HTTP_PROXY=http://localhost:8888
此时您基本上开始发出 Git 命令并监控 http 流量。
例如执行“git push -u origin master”
返回:
GET http://localhost:8000/gitserver/git/info/refs?service=git-receive-pack
这个博客条目有一个上述方法的一个很好的例子。