所以基本上,当按下分支时,我想在master分支和目标分支之间运行差异,然后将这些文件输入eslint。
命令是:
git diff --name-only master..$TRAVIS_BRANCH | grep -E '\.js$' | xargs npx eslint
当我在本地使用它并将$ TRAVIS_BRANCH替换为我当前的工作分支时,它就可以工作。
但是,当我在travis ci上使用此功能时,构建过程仅签出对其进行测试的分支,而不是主分支。所以它出了错误
$ git diff --name-only master..$TRAVIS_BRANCH | grep -E '\.js$' | xargs npx eslint
fatal: ambiguous argument 'master..test-fail': unknown revision or path not in the working tree.
如何获取travis CI来区分分支中更改的文件并仅对那些文件运行eslint?
.travis.yml
language: node_js
node_js:
- "lts/*"
- "node"
- "8"
jobs:
include:
- stage: lint
script: git diff --name-only master..$TRAVIS_BRANCH | grep -E '\.js$' | xargs npx eslint
答案 0 :(得分:0)
eslint
(或任何linter)。git fetch origin ${TRAVIS_BRANCH}
git diff -U0 $(git merge-base HEAD "origin/${TRAVIS_BRANCH:-master}"
用作您的差异...我们在合并请求中使用它。似乎需要“原始”上游。答案 1 :(得分:0)
为了将另一个答案添加到不需要python的混合中,我碰到了Fastlint,它似乎正是这样做的。
例如,在与eslint
分支相比已更改的js
或src
目录中的所有tests
文件上运行origin/master
。
fastlint --status --print0 --glob '{src,tests}/**/*.{js,jsx}' origin/master HEAD | xargs -0 eslint