Github 操作错误;看不到与 Master 的 git 差异
Github Actions Error; cannot see git diff to Master
我正在尝试找到一种方法来仅对当前分支上已更改的降价文件进行 lint。我写了一个 bash 脚本,在本地 运行 没问题,但在 Github 操作中中断。
预期结果:
仅 lint 已在 GitHub 拉取请求操作中的分支上更改的降价文件。
#!/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 操作工作流程中调用 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
默认情况下会检查 GITHUB_SHA
指定的合并提交,而不是合并到基础中的分支。参见documentation here。
您可以覆盖此默认行为并像这样检出合并到基础中的分支:
- uses: actions/checkout@master
with:
ref: ${{ github.head_ref }}
我不确定这对于您的用例是否有必要,但是当 运行 diff
合并提交时可能会产生意想不到的影响。
我正在尝试找到一种方法来仅对当前分支上已更改的降价文件进行 lint。我写了一个 bash 脚本,在本地 运行 没问题,但在 Github 操作中中断。
预期结果: 仅 lint 已在 GitHub 拉取请求操作中的分支上更改的降价文件。
#!/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 操作工作流程中调用 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
默认情况下会检查 GITHUB_SHA
指定的合并提交,而不是合并到基础中的分支。参见documentation here。
您可以覆盖此默认行为并像这样检出合并到基础中的分支:
- uses: actions/checkout@master
with:
ref: ${{ github.head_ref }}
我不确定这对于您的用例是否有必要,但是当 运行 diff
合并提交时可能会产生意想不到的影响。