首页 > 解决方案 > Git hook - 如何简化推送时的提交查询?

问题描述

为了监听 git 提交,我连接到推送服务。每次我进行推送时,我的应用程序都会收到调用,然后我向服务器请求其中的所有提交,然后我再次向服务器请求其中的所有文件信息。了解所有细节。

我记得,早些时候当 push hook 触发服务时。它传递所有信息。但后来他们修改了它。现在我们必须多次调用才能获得完整的信息。

这可以做得更简单吗?

在此处输入图像描述

标签: git

解决方案


该线程中所述,webhook 的替代方法是使用GitHub Action以便在推送时获取提交信息,然后通过电子邮件发回结果

在 push 事件中,before 和 after 键代表本次推送操作的上一次提交和本次推送操作中的最后一次提交。
所有与推送相关的提交都包含在这两个提交之间。 防止

要获取与推送事件相关的修改文件,您可以使用git diff命令来获取文件名。

git diff --name-only ${{ github.event.before }} ${{ github.event.after }}

另外,请记住在结帐操作中设置 fetch-depth: 0。
请参阅我的示例工作流 yml:

on:
  push:
jobs:
   build: 
     runs-on: ubuntu-latest
     steps: 
      - uses: actions/checkout@v2
        with: 
          fetch-depth: 0
      - name: get file changes
        run: | 
          git diff --name-only ${{ github.event.before }} ${{ github.event.after }}

您可以将git diff命令替换为简单的git log, 以获得更多信息,而不仅仅是文件的名称。

关键是:额外的调用是在 GitHub 端完成的,最终结果会发回给你,这与 webhook 方法相反,当你收到信号并且必须发回额外的查询时。


推荐阅读