我在开发机器上有git(git1
,如下)。
我将更改推送到git服务器(mygitserv
,下方)。
git服务器(mygitserv
)使用后接收挂钩(~/myrepo/.git/hooks/post-receive
)将更改转发到Github(github
,下方)。
git1
>==<git push>==>
mygitserv
>==<post-receive runs git push>==>
github
[myuser@gitserv:~] cat ~/myrepo/.git/hooks/post-receive
#!/bin/sh
read oldrev newrev ref
echo "$oldrev"
echo "$newrev"
echo "$ref"
git push origin "$ref"
当我推送到git1
时,我在mygitserv
上获得的输出:
remote: 9679d6ced07eafbbbd8595b1b4af887f2d8f3f52
remote: 1cee4034f0afcc3fd3babaa2cbcdd4aa6e0e3078
remote: refs/heads/mybranch
remote: Permission denied (publickey).
remote: fatal: The remote end hung up unexpectedly
To ssh://vagrant@localhost:19999/~/myrepo
9679d6c..1cee403 mybranch -> mybranch
简单,对吧?
当我从Permission denied (publickey)
开发机器推出分支时,我从gitserv
获得了可怕的git1
。
无论如何,我怀疑我的代理转发正在以某种方式弄乱这一点。
[myuser@gitserv:~]$ git remote -v
origin git@github.com:v6/myrepo.git (fetch)
origin git@github.com:v6/myrepo.git (push)
这就是我询问git用户如何工作的原因。
我可以在Python 2.6和Python 3.5中发布上述代码的等价物,我已经尝试了这两种代码。
post-receive
上gitserv
使用哪个身份来运行自己的git push
?