【问题标题】:Can I send out of band data along with a commit?我可以在提交的同时发送带外数据吗?
【发布时间】:2013-07-21 03:52:25
【问题描述】:

我希望将远程 git 存储库与 RTC 服务器集成,方法是使用他们的 RESTful 接口附加到 gitweb 的链接以进行与特定任务关联的提交。

理想情况下,这将通过 git 服务器上的 post-receive 挂钩来完成,但 git 运行的处理用户不允许用户帐户向 RTC 进行身份验证。

我能想到的最佳解决方案是以某种方式传递一个身份验证令牌(以 cookies.txt 的形式从 RTC 获取)以及 git push(但不让它成为提交的一部分)。

另一种方法是在每个客户端存储库上添加一个 post-push 挂钩,但这有其自身的问题(包括没有这样的挂钩)。

【问题讨论】:

  • 为什么不直接将链接添加到客户端的提交消息中,即 gerrit 如何处理 Change-Id?
  • 你的 post-receive 钩子应该使用某种形式的IPC 来告诉一个长时间运行的进程,它已经获得了必要的身份验证令牌来连接那个 RTC 服务器,并告诉它你需要它告诉的任何内容。即使用代理进程。

标签: git authentication githooks rtc


【解决方案1】:

使用 git 2.10 及更高版本,您可以使用git --push-option <string> 将给定的字符串值传递给服务器,服务器将它们传递给 pre-receive 和 post-receive 挂钩。 git push documentation.

git push --push-option=... 命令行给出的推送选项个数可以从环境变量GIT_PUSH_OPTION_COUNT中读取,选项本身在GIT_PUSH_OPTION_0, GIT_PUSH_OPTION_1,...​协商不使用推送选项阶段,将不会设置环境变量。如果客户端选择使用推送选项,但不发送任何选项,则计数变量将设置为零,GIT_PUSH_OPTION_COUNT=0.git hook documentation

【讨论】:

  • 请注意,在服务器端,您仍然必须按照this thread 中的说明将receive.advertisePushOptions 设置为true 才能正常工作。我花了一段时间才弄清楚,因为这真的没有很好的记录。
猜你喜欢
  • 2021-01-09
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2021-05-16
  • 2016-03-01
相关资源
最近更新 更多