当git-receive-pack有新行返回时它会失败

时间:2017-04-14 16:01:40

标签: git

我正在尝试响应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说的那样做。

提前致谢

1 个答案:

答案 0 :(得分:1)

从您链接的文件:

  

git-receive-pack命令立即响应当前每个引用的一行 - 在这种情况下,只是主分支及其SHA-1。第一行还有一个服务器功能列表(此处为report-status,delete-refs,以及其他一些功能,包括客户端标识符)。

你从哪里获得capabilities作为参考名称?您看到的错误消息表明这不是预期的格式,我在传输协议文档中没有提到它(作为引用名称)。我建议在文档使用时尝试refs/heads/master,并从那里开始分支。