- Notifications
You must be signed in to change notification settings - Fork0
GitHub Actions to get git diff
License
PlatziDev/get-diff-action
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Read this in other languages:English,日本語.
GitHub actions to get git diff.
You can get the differences via env or action output.
Basic Usage
on:pull_requestname:CIjobs:eslint:name:ESLintruns-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:PlatziDev/get-diff-action@v0.1.0with:PATTERNS:| +(src|__tests__)/**/*.ts !src/exclude.tsFILES:| yarn.lock .eslintrc -name:Install Package dependenciesrun:yarn installif:env.GIT_DIFF -name:Check code style# Check only if there are differences in the source coderun:yarn lintif:env.GIT_DIFF
Details of the patterns that can be specified
src/main.tssrc/utils/abc.ts__tests__/test.tsyarn.lock.eslintrcanywhere/yarn.lock
main.tssrc/xyz.txtsrc/exclude.ts
| name | value |
|---|---|
GIT_DIFF | 'src/main.ts' 'src/utils/abc.ts' '__tests__/test.ts' 'yarn.lock' '.eslintrc' 'anywhere/yarn.lock' |
GIT_DIFF_FILTERED | 'src/main.ts' 'src/utils/abc.ts' '__tests__/test.ts' |
MATCHED_FILES | 'yarn.lock' '.eslintrc' 'anywhere/yarn.lock' |
Specify a little more detail
on:pull_requestname:CIjobs:eslint:name:ESLintruns-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:PlatziDev/get-diff-action@v0.1.0with:PATTERNS:| +(src|__tests__)/**/*.tsFILES:| yarn.lock .eslintrc -name:Install Package dependenciesrun:yarn installif:env.GIT_DIFF -name:Check code style# Check only source files with differencesrun:yarn eslint ${{ env.GIT_DIFF_FILTERED }}# e.g. yarn eslint 'src/main.ts' '__tests__/test.ts'if:env.GIT_DIFF && !env.MATCHED_FILES -name:Check code style# Check only if there are differences in the source code (Run a lint on all files if there are changes to yarn.lock or .eslintrc)run:yarn lintif:env.GIT_DIFF && env.MATCHED_FILES
If there is no difference in the source code below, this workflow will skip the code style check
src/**/*.ts__tests__/**/*.ts
Get git diff
git diff${FROM}${DOT}${TO}'--diff-filter=${DIFF_FILTER}' --name-only
e.g. (default)
DOT:'...'DIFF_FILTER:'AMRC'
=>
git diff${FROM}...${TO}'--diff-filter=AMRC' --name-only
=>
.github/workflows/ci.yml__tests__/utils/command.test.tspackage.jsonsrc/main.tssrc/utils/command.tssrc/docs.mdyarn.lockFiltered by
PATTERNSoptione.g.
PATTERNS:| src/**/*.+(ts|md) !src/utils/*
=>
src/main.tssrc/docs.mdFiltered by
FILESoptione.g.
FILES:package.json
=>
package.jsonanywhere/package.jsonMapped to absolute if
ABSOLUTEoption is true (default: false)e.g.
/home/runner/work/my-repo-name/my-repo-name/src/main.ts/home/runner/work/my-repo-name/my-repo-name/src/docs.mdCombined by
SEPARATORoptione.g. (default)
SEPARATOR:''
=>
/home/runner/work/my-repo-name/my-repo-name/src/main.ts /home/runner/work/my-repo-name/my-repo-name/src/docs.md
| name | description | e.g. |
|---|---|---|
| diff | The results of diff file names. If inputs SET_ENV_NAME(default:GIT_DIFF) is set, an environment variable is set with that name. | src/main.ts src/docs.md |
| count | The number of diff files. If inputs SET_ENV_NAME_COUNT(default:'') is set, an environment variable is set with that name. | 100 |
| insertions | The number of insertions lines. (Available only ifGET_FILE_DIFF istrue)If inputs SET_ENV_NAME_INSERTIONS(default:'') is set, an environment variable is set with that name. | 100 |
| deletions | The number of deletions lines. (Available only ifGET_FILE_DIFF istrue)If inputs SET_ENV_NAME_DELETIONS(default:'') is set, an environment variable is set with that name. | 100 |
| lines | The number of diff lines. (Available only ifGET_FILE_DIFF istrue)If inputs SET_ENV_NAME_LINES(default:'') is set, an environment variable is set with that name. | 200 |
| eventName | action |
|---|---|
| pull_request | opened, reopened, synchronize, closed, ready_for_review |
| push | * |
If called on any other event, the result will be empty.
| condition | FROM | TO |
|---|---|---|
| tag push | --- | --- |
| pull request | pull.base.ref (e.g. main) | context.ref (e.g. refs/pull/123/merge) |
| push (which has related pull request) | pull.base.ref (e.g. main) | refs/pull/${pull.number}/merge (e.g. refs/pull/123/merge) |
| context.payload.before = '000...000' | default branch (e.g. main) | context.payload.after |
| else | context.payload.before | context.payload.after |
on:pull_request:types:[opened, reopened, synchronize, closed, ready_for_review]jobs:eslint:name:ESLintruns-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:PlatziDev/get-diff-action@v0.1.0with:CHECK_ONLY_COMMIT_WHEN_DRAFT:true# ...
on:pull_requestname:CIjobs:dump:name:Dumpruns-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:PlatziDev/get-diff-action@v0.1.0with:PATTERNS:| +(src|__tests__)/**/*.ts !src/exclude.tsFORMAT:json -run:echo '${{ env.GIT_DIFF }}' | jq .
Result:
> Runecho'["yarn.lock"]'| jq.["yarn.lock"]
GitHub Actions doesn't supportworking-directory foruses, so you can't run this action separately for monorepo configuration, etc. However, if you specify theRELATIVE option, it will be used as--relative=<RELATIVE> forgit diff.
https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---relativeltpathgt
on:pull_requestname:CIjobs:dump:name:Dumpruns-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:PlatziDev/get-diff-action@v0.1.0with:PATTERNS:'*.ts'RELATIVE:'src/abc' -run:echo ${{ env.GIT_DIFF }}
If the filessrc/abc/test1.ts,src/abc/test2.ts,src/abc/test3.txt, andsrc/test4.ts exist, the result will be as follows:
> Runecho'test1.ts''test2.ts'test1.ts test2.ts
About
GitHub Actions to get git diff
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Languages
- TypeScript99.1%
- Other0.9%

