我已根据this page设置了Git服务器。
我还根据this page合并了post-receive
个钩子。
我使用GitHub for Windows在本地计算机和git repo之间进行通信。
我的问题是post-receive
挂钩利用了git config user.asana-key中的变量。我在本地计算机上设置了该变量。但是,当我提交到服务器存储库时,该值为空。
我想知道我是否应该做一些具体的事情来发送这个变量以及git commit,以便钩子可以读取它? 如果有什么方法可以自动将其与每次提交一起发送?
修改
我已经了解到这些配置变量永远不会通过提交发送到服务器。所以我现在的问题是有没有办法发送这些变量,或者在post-receive hook中有没有办法根据附加到commit的user.email设置密钥?
答案 0 :(得分:0)
我是否理解您希望每次推送都能在服务器上更新git配置?
未以任何方式克隆和版本化Git配置。并且服务器端的git钩子肯定会读取服务器配置。但是你可以做一个简单的自动化:
git config --local user.asana-key <value>
或者,如果有很多用户,并且您需要将每个密钥作为每个提交的参数发送 - 这不会起作用。
答案 1 :(得分:0)
我没有得到这方面的答案,所以我一直在四处寻找,只是在有人遇到这个问题时将其发布给其他人。
我发现您无法访问在git hooks中通过提交发送的user.name和user.email。所以我不得不采取另一种方式。我使用git存储库在服务器上安装了gitolite,遵循位于here的idiots指南。我将其与他们关于如何使用位于here的现有仓库的指示相结合。然后按照他们的指南使用钩子,它解释了传递给挂钩的变量,位于here。具体来说,我使用了变量GL_USER。
然后在我添加的git repo的本地配置中:
[asana]
gitolite-user-name = asana-api-key
其中gitolite-user-name是与您拥有的每个gitolite用户关联的用户名,asana-api-key是该用户的api密钥。
然后在我的post-receive hook中我添加了:
apikey=$(git config asana.$GL_USER)
它为执行提交的用户获取相应的api密钥。这允许每个用户使用他们在Asana中的帐户评论他们自己的提交。