我正在尝试响应git-receive-pack请求,所以如果我的程序返回
009c0000000000000000000000000000000000000000 capabilities^{}report-status delete-refs side-band-64k quiet atomic ofs-delta agent=git/2.10.1.(Apple.Git-78)
它的工作原理和smartgit这样的git客户端也能正常工作,但是当返回值有一个新行(\ n)时,0000作为响应就像标准一样
009c0000000000000000000000000000000000000000 capabilities^{}report-status delete-refs side-band-64k quiet atomic ofs-delta agent=git/2.10.1.(Apple.Git-78)
0000
它不起作用,客户端告诉我
/test.git/info/refs not valid: is this a git repository
有什么问题?我只是按https://git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols说的那样做。
提前致谢
答案 0 :(得分:1)
从您链接的文件:
git-receive-pack命令立即响应当前每个引用的一行 - 在这种情况下,只是主分支及其SHA-1。第一行还有一个服务器功能列表(此处为report-status,delete-refs,以及其他一些功能,包括客户端标识符)。
你从哪里获得capabilities
作为参考名称?您看到的错误消息表明这不是预期的格式,我在传输协议文档中没有提到它(作为引用名称)。我建议在文档使用时尝试refs/heads/master
,并从那里开始分支。