gpt4 book ai didi

git - 在 Github 操作中,如何在关闭/merge 后从 pull 请求中获取文件差异?

转载 作者:行者123 更新时间:2023-12-05 04:35:24 26 4
gpt4 key购买 nike

我正在尝试在 GitHub Action 中运行一些代码,这些代码依赖于 merge 到我们的 develop 分支中的文件。 merge 后,我似乎找不到合适的环境变量或事件值来获取 pull 请求的差异。我已经尝试在 push 上运行它到 develop 分支,以及在带有 type: closed 的 pull 请求上运行它,并以是否 pull 为条件请求已 merge 。

以下是我尝试过的两件事:

关闭 pull 请求:

name: test_pr_action
on:
pull_request:
types:
- closed

jobs:
job1:
if: github.event.pull_request.merged == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- name: one step
run: |
git fetch origin $GITHUB_BASE_REF --depth=1
git diff --diff-filter=AM --name-only ${{ github.event.base.sha }} ${{ github.event.head.sha }}

对于 pull 请求,该步骤运行但不获取 SHA,因此不输出任何内容。

推送:

name: test_pr_action

on:
push:
branches:
- main

jobs:
job1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- name: one step
run: |
git fetch origin $GITHUB_BASE_REF --depth=1
git diff --diff-filter=AM --name-only ${{ github.event.before }} ${{ github.event.after }}

对于推送,该步骤失败,因为它不喜欢第一个 SHA。

在 merge 之前,我已经有在 pushpull request 上运行的操作,所以我以前使用过这些值,但无法让它为此工作案例。

任何建议都有帮助!谢谢!

最佳答案

感谢@GuiFalourd我能够让它与 changed-files action 一起工作.

我的代码最终看起来像这样:

name: action1
on:
push:
branches: [ develop ]

jobs:
job1:
runs-on: machine1
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v14.4
with:
since_last_remote_commit: 'true'
- name: get_modified_files
id: diff
working-directory: './diff_files'
run: |
git config diff.renameLimit 99000
git fetch origin $GITHUB_BASE_REF --depth=1
touch files.txt
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
echo $file >> files.txt
done
cat files.txt | split -l 100 -a 8
rm files.txt
export filename_string=""
for i in `ls`; do export filename_string=$filename_string"file!"$i; done
echo "::set-output name=filenames::$filename_string"

对于任何想知道所有额外内容是什么的人,我正在从 all_changed_files 变量中读取每个文件名到一个单独的文件中,我将其分类并拆分为几个其他文件,这些文件留在diff_files 目录。然后,在后续步骤中运行的 python 脚本会读取该目录。我像这样将它分解成单独的文件,因为这个 repo 中的 PR 往往有数千个文件差异。

关于git - 在 Github 操作中,如何在关闭/merge 后从 pull 请求中获取文件差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71043653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com