2015-05-19 117 views
0

我已经根据this page设置了一个Git服务器。将多个git用户与Asana集成

我也根据this page合并了post-receive挂钩。

我使用GitHub for Windows在本地机器和git repo之间进行通信。

我的问题是post-receive挂钩利用在git config user.asana-key中找到的变量。我在本地机器上设置了该变量。但是,当我提交到服务器存储库时,该值为空。

我想知道是否有什么具体的东西我应该做的发送这个变量一起git提交,以便挂钩可以读取它?
如果还有什么方法可以自动执行此操作,那么每次提交都会发送一次?

编辑:

因为我已经了解到,这些配置变量从来没有提交正常发送到服务器。所以我现在的问题变成了发送这些变量的方法,或者在post-receive钩子内部有办法根据附加到提交的user.email来设置密钥?

回答

0

我没有收到有关此问题的答案,因此我一直在四处张望,并将其发布给其他人,以防有人穿过此问题。

我发现你不能访问在git钩子中提交的user.name和user.email。所以我不得不换另一种方式。我将gitolite安装在服务器上,使用git仓库,他们的白痴指南位于here。我将它与他们关于如何使用现有回购的指示相结合,位于here。然后按照他们的指导使用钩子,它解释了什么变量传递给钩子,位于here。具体而言,我使用了变量GL_USER。

然后在本地配置的git仓库我里面加:

[asana] 
    gitolite-user-name = asana-api-key 

凡gitolite,用户名是你所拥有的每个gitolite用户相关的用户名和体位法的API密钥是API密钥为那个用户。

然后在我的后收到钩我说:

apikey=$(git config asana.$GL_USER) 

抓住哪些该做的提交用户的相应API密钥。这允许每个用户在Asana中使用他们的帐户评论他们自己的提交。

0

我是否理解你是否希望git配置在每次推送时都在服务器上更新?

Git配置没有以任何方式克隆和版本化。而服务器端的git hook肯定会读取服务器配置。但是你可以做一个简单的自动化:

  • 在您的回购user.asana键值一个txt文件
  • 一个后收到钩来读取更新后的值,并运行git config --local user.asana-key <value>

或者,如果有许多用户,并且您需要发送单个密钥作为每次提交的参数 - 这将不起作用。

+0

有2个用户,所以如果可能的话,让他们的本地机器有用是有帮助的。我不太确定,我明白为什么它不能在本地机器上。正如我所说我使用Github for Windows(GUI客户端),它允许我设置user.name和user.email,那些通过就好,显示在我做的提交。 –

+0

有一个重要的区别。 user.name和user.email用于*本地*将信息放入提交中,然后推送。配置变量本身从未被服务器看到。 –

+0

啊,好的。那么无论如何要在提交期间传递该信息?或者在git钩子(post-receive)内部可以根据用于提交的user.email来设置密钥? –