Bitbucket、Github 和其他服务往往有一个“push”钩子,这样当你将代码推送到存储库时,该服务可以点击一个 URL(可能在生产服务器上),告诉它拉取最新的代码。
问题是,如果我在云中有许多服务器(根据负载进出),我无法知道在任何给定时间云中有多少服务器,因此我无法配置哪些服务器“推送”到的网址。还有其他方法吗?
有没有办法让所有生产服务器点击 github、bitbucket 等上的 url,并检查它们是否需要更新?这并不特定于任何一项服务,因为我想如果任何一项服务都拥有它,那么所有服务都会如此。我只是不知道这个“功能”会被称为什么。
Bitbucket、Github 和其他服务往往有“push”钩子
实际上,Git 存储库托管服务器将具有anotherGit 2.10(2016 年第 3 季度)的选项:推送选项.
See commit 3ac8703, commit f6a4e61, commit c714e45, commit 77a9745 (14 Jul 2016) by Stefan Beller (stefanbeller).
(Merged by Junio C Hamano -- gitster -- in commit cf27c79, 03 Aug 2016)
该功能是在这个线程:
允许用户通过推送将信息传递到遥控器上的 pre/post-receive 挂钩。
当使用的远程主机不仅仅是普通的 Git 主机时(例如 Gerrit,
Git{hub/lab} 等)这可能会变得更加明显:(服务器后端特定的)推送选项可以指示服务器:
- 打开拉取请求
- 发送电子邮件要求审核
- (un)触发持续集成
- 设置持续集成的优先级(即机器人推送可能要求
与人类相比,优先级较低)
- ...
大多数这些操作也可以在客户端完成,但在这些以远程为中心的工作流程中,在远程执行此操作更容易,这就是我们需要在那里传输信息的原因。
更具体的例子:
- 当您希望将 Gerrit 的更改提交给 refs/heads/master 时,您
推送到一个神奇的分支
refs/for/master
Gerrit 将为您创建更改(类似于拉取请求)。
相反,我们可以想象你推动一个神奇的refs/heads/master
带有推送选项“create-change
".
- 当推送到 Gerrit 时,您已经可以通过添加 ' 来附加其中一些信息
%
' 后面是 ref 的参数,即与 Gerrit 交互时,可以执行类似的操作1:
git push origin HEAD:refs/for/master%draft%topic=example%cc=jon.doe@xxxxxxxxxxx
这对我们的用户来说没有吸引力,因为它看起来像是为了让它发挥作用而进行的黑客攻击。
如果拼写为: 则读起来会更好:
git push origin HEAD:refs/for/master \
--push-option draft \
--push-option topic=example \
--push-option cc=jon.doe@xxxxxxxxxxx
(使用更容易输入的简短形式,但这已经更直观了)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)