gpt4 book ai didi

bash - Github 操作错误;看不到 Master 的 git diff

转载 作者:行者123 更新时间:2023-12-04 01:38:11 25 4
gpt4 key购买 nike

我试图找到一种方法来仅对当前分支上已更改的 Markdown 文件进行 lint。我写了一个 bash 脚本,它在本地运行良好,但在 Github Actions 中中断了。

预期结果:
lint 仅在拉取请求时在 GitHub 操作中的分支上更改的 Markdown 文件。

#!/bin/bash
files=`git diff --name-only master`
for x in $files;
do
if [ ${x: -3} == ".md" ]
then
node_modules/.bin/markdownlint $x
fi
done

我在 package.json 中调用脚本
"scripts": {
"test": "bash mdlint.sh"
}

然后我在 GitHub Actions 工作流程中调用 bash 脚本:
name: CI

on:
pull_request:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- uses: actions/setup-node@master
- name: lint all markdownfiles
run: |
npm install
npm run test

这是 GitHub 操作中的错误:
  shell: /bin/bash -e {0}
npm WARN Gatsby_site No repository field.
npm WARN Gatsby_site No license field.

added 33 packages from 26 contributors and audited 43 packages in 0.952s
found 0 vulnerabilities


> @ test /home/runner/work/Gatsby_site/Gatsby_site
> bash mdlint.sh

fatal: ambiguous argument 'master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

有没有办法让 GitHub 操作仅在当前分支上更改的文件上运行 linter?

最佳答案

我认为你可以通过关联 master 来解决它与 origin master像这样:

git fetch origin master:master
git diff --name-only master

请注意触发 on: pull_request 的事件工作流不与分支相关联,它们与合并提交 SHA 相关联。所以 actions/checkout@v1默认情况下将 check out 由 GITHUB_SHA 指定的合并提交,而不是合并到基础中的分支。见 documentation here .

您可以覆盖此默认行为并检查合并到基础中的分支,如下所示:
      - uses: actions/checkout@master
with:
ref: ${{ github.head_ref }}

我不确定您的用例是否需要这样做,但运行 diff 时可能会出现意想不到的效果。在合并提交上。

关于bash - Github 操作错误;看不到 Master 的 git diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630097/

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