我有一个github动作设置在拉请求的创建/同步上运行。我希望能够获得所有JSON文件路径的列表,无论是创建,或在拉请求中编辑,并做一些与这个文件路径列表。
Github工作流name: PR
on:
pull_request
jobs:
run-script:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: run the script
run:./.github/scripts/script.sh
shell: bash
script.sh
for filepath in $(...); do # get the list of filepaths that were created or edited in the PR
# do something with the filepaths
done
我的尝试for file in $(git diff-tree --no-commit-id --name-only -r HEAD~1 HEAD | grep '.json$'); do
done
但是这给了我一个错误
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
对于脚本,您可以获得json文件的diff,如下所示:
mergeBranch='main' # Change if PR merges into a different branch
oldCommit=$(git log $mergeBranch | head -n 1 | awk -F ' ' '{print $2}')
latestCommit=$(git log | head -n 1 | awk -F ' ' '{print $2}')
git diff --merge-base $oldCommit $latestCommit -- '*.json'
同样,这不是要求,而是建议编辑更少的文件。你可以把脚本的内容放在GitHub Action步骤中,如下所示:
- name: Check Diff
run: |
# Script Contents Below