Compare commits

...

97 Commits

Author SHA1 Message Date
Tonye Jack
c4d29bf5b2 Merge pull request #710 from tj-actions/chore/use-local-scoped-variables 2022-10-25 16:04:27 -06:00
Tonye Jack
995ead5584 chore: use local scoped variables 2022-10-25 15:52:44 -06:00
Tonye Jack
af3b754ee2 Merge pull request #709 from tj-actions/feat/add-support-for-fetching-more-history 2022-10-25 15:39:04 -06:00
Tonye Jack
5c9ad7fce6 Updated test.yml 2022-10-25 15:00:32 -06:00
Tonye Jack
4b455d3d83 Updated test.yml 2022-10-25 15:00:08 -06:00
Tonye Jack
941c21b681 Simplify code 2022-10-25 14:58:02 -06:00
Tonye Jack
cfc8494f3b Update README.md 2022-10-25 14:49:22 -06:00
Tonye Jack
fe56d428c0 feat: add support for fetching more history 2022-10-25 14:12:36 -06:00
Tonye Jack
f10717dc73 Merge pull request #707 from tj-actions/upgrade-to-v33.0.0 2022-10-21 10:24:31 -06:00
jackton1
e4decfd4bd Upgraded from v32 -> v33.0.0 2022-10-21 15:31:27 +00:00
Tonye Jack
aa52cfcd81 Merge pull request #706 from tj-actions/chore/update-readme 2022-10-21 08:48:36 -06:00
Tonye Jack
d1fb3092ba chore: update readme 2022-10-21 08:44:19 -06:00
Tonye Jack
b4938889d4 Merge pull request #703 from tj-actions/feat/switch-to-three-dot-diff 2022-10-21 08:30:41 -06:00
Tonye Jack
9403c911ce Updated Codacy scan. 2022-10-21 07:10:17 -06:00
Tonye Jack
50142ba7af Merge branch 'main' into feat/switch-to-three-dot-diff 2022-10-21 07:07:13 -06:00
Tonye Jack
711eaef9ea Update spacing and revert changes to git log commands. 2022-10-21 07:06:33 -06:00
Tonye Jack
b670630c81 Updated error handling 2022-10-21 07:02:46 -06:00
Tonye Jack
3b998fdc54 Merge pull request #705 from tj-actions/chore/clean-up-test 2022-10-21 06:59:01 -06:00
Tonye Jack
dd5ec50e4b Update error handling. 2022-10-21 06:58:29 -06:00
Tonye Jack
627dfaf069 Update get-changed-paths.sh 2022-10-21 06:45:37 -06:00
Tonye Jack
ca3088a08d Update get-changed-paths.sh 2022-10-21 06:37:03 -06:00
Tonye Jack
63725ea32d chore: clean up test 2022-10-21 06:18:43 -06:00
Tonye Jack
8e3e2f13a8 Update action.yml 2022-10-20 13:19:57 -06:00
Tonye Jack
262238adca Update get-changed-paths.sh 2022-10-20 13:17:42 -06:00
Tonye Jack
4e8b111da1 feat: switch to three dot diff 2022-10-20 13:13:05 -06:00
Tonye Jack
27c18b1c64 Merge pull request #701 from tj-actions/chore/update-readme 2022-10-18 18:09:31 -06:00
jackton1
2d0a396d46 Updated README.md 2022-10-19 00:08:53 +00:00
Tonye Jack
cdbd6e5e85 Merge pull request #700 from tj-actions/chore/update-readme 2022-10-18 18:01:12 -06:00
Tonye Jack
f6fb7cb101 updated readme 2022-10-18 17:59:54 -06:00
Tonye Jack
4b2a818159 updated readme 2022-10-18 17:58:37 -06:00
Tonye Jack
0b2cecdaae chore: update readme 2022-10-18 17:52:27 -06:00
Tonye Jack
a6a95f098b Create README.md 2022-10-18 13:29:20 -06:00
renovate[bot]
17a9fac9ca chore(deps): update peter-evans/create-pull-request action to v4.2.0 2022-10-18 00:29:13 -06:00
renovate[bot]
413d837155 chore(deps): update pascalgn/automerge-action action to v0.15.5 2022-10-17 12:19:08 -06:00
renovate[bot]
ad363667e1 chore(deps): update peter-evans/create-pull-request action to v4.1.4 2022-10-17 01:56:25 -06:00
renovate[bot]
eb136c70d4 chore(deps): update tj-actions/verify-changed-files action to v12 2022-10-16 00:56:36 -06:00
Tonye Jack
1ce0241964 Merge pull request #695 from tj-actions/upgrade-to-v32.1.2 2022-10-15 22:45:52 -06:00
jackton1
a2673955a0 Upgraded from v32.1.1 -> v32.1.2 2022-10-16 04:36:56 +00:00
Tonye Jack
1d6e210c97 Merge pull request #694 from tj-actions/chore/clean-up-test 2022-10-15 22:33:22 -06:00
Tonye Jack
f36f89daeb chore: clean up test 2022-10-15 22:13:19 -06:00
Tonye Jack
210f4edecf Merge pull request #693 from tj-actions/chore/clean-up-test
fix: bug setting until and since inputs.
2022-10-15 19:37:40 -06:00
Tonye Jack
a558487ee0 Updated usage of until 2022-10-15 18:21:02 -06:00
Tonye Jack
b45fdcf650 Updated test.yml 2022-10-15 18:03:55 -06:00
Tonye Jack
baf172ed6a Updated test.yml 2022-10-15 17:54:45 -06:00
Tonye Jack
e64110acb1 Update test.yml 2022-10-15 17:33:25 -06:00
Tonye Jack
d8ae75228d Updated diff-sha.sh 2022-10-15 17:25:37 -06:00
Tonye Jack
61ed208946 Updated diff-sha.sh 2022-10-15 16:26:42 -06:00
Tonye Jack
4f38efcb15 Updated debug message. 2022-10-15 16:01:59 -06:00
Tonye Jack
62c6729ad3 Update test.yml 2022-10-15 12:50:01 -06:00
Tonye Jack
fd0ee42a4d Update test.yml 2022-10-15 12:48:13 -06:00
Tonye Jack
d46fe4c5c6 Update test.yml 2022-10-15 12:47:32 -06:00
Tonye Jack
307e695c51 chore: clean up test 2022-10-15 12:34:47 -06:00
Tonye Jack
b3d763dd5c Merge pull request #692 from tj-actions/upgrade-to-v32.1.1 2022-10-14 15:56:24 -06:00
jackton1
f0555f4cd6 Upgraded from v32.1.0 -> v32.1.1 2022-10-14 19:26:31 +00:00
Tonye Jack
8953e851a1 Merge pull request #691 from tj-actions/feat/remove-duplicate-files-support-backwards-compatible-set-output 2022-10-14 13:22:11 -06:00
Tonye Jack
09ae9e21b6 Updated test.yml 2022-10-14 13:17:09 -06:00
Tonye Jack
982d4d0dea Update test. 2022-10-14 13:04:29 -06:00
Tonye Jack
724c3d91d5 Update diff-sha.sh 2022-10-14 13:01:08 -06:00
Tonye Jack
759895012f feat: remove duplicate files support backwards compatible set-output 2022-10-14 12:59:47 -06:00
Tonye Jack
48f056c336 Update README.md 2022-10-13 17:57:33 -06:00
Tonye Jack
7e7cfb8175 Update README.md 2022-10-13 11:10:10 -06:00
Tonye Jack
d8275c3c60 Merge pull request #687 from tj-actions/upgrade-to-v32.1.0
Upgraded to v32.1.0
2022-10-12 18:37:53 -06:00
jackton1
7c854716df Upgraded from v32.0.1 -> v32.1.0 2022-10-12 21:41:21 +00:00
Tonye Jack
efc6ca5073 Merge pull request #686 from tj-actions/chore/update-readme 2022-10-12 14:58:22 -06:00
jackton1
ff1033d6d9 Updated README.md 2022-10-12 20:37:10 +00:00
Tonye Jack
8de562e931 Merge pull request #685 from tj-actions/all-contributors/add-lpulley 2022-10-12 14:34:45 -06:00
Tonye Jack
291d397b90 Merge pull request #679 from lpulley/set-output-github-output 2022-10-12 14:34:34 -06:00
Logan Pulley
1ced186070 Merge branch 'set-output-github-output' of github.com:lpulley/changed-files into set-output-github-output 2022-10-12 15:16:28 -05:00
Logan Pulley
dd9210256d Use cat instead of echo 2022-10-12 15:16:26 -05:00
allcontributors[bot]
846166ffa0 docs: update .all-contributorsrc [skip ci] 2022-10-12 20:16:08 +00:00
allcontributors[bot]
4e8b0a81f6 docs: update README.md [skip ci] 2022-10-12 20:16:07 +00:00
Logan Pulley
be3cb7b5aa Merge branch 'main' into set-output-github-output 2022-10-12 15:14:48 -05:00
Logan Pulley
81520789a6 Add spaces 2022-10-12 15:14:35 -05:00
Tonye Jack
bea18ddafc Merge pull request #684 from tj-actions/chore/update-readme 2022-10-12 13:59:10 -06:00
jackton1
b14b0a186c Updated README.md 2022-10-12 19:58:48 +00:00
Tonye Jack
8c6e3fef17 Merge pull request #682 from tj-actions/chore/update-readme 2022-10-12 13:58:32 -06:00
Tonye Jack
62690928c6 Merge pull request #683 from tj-actions/chore/update-test 2022-10-12 13:58:12 -06:00
Tonye Jack
ec96351509 chore: update test 2022-10-12 13:39:22 -06:00
jackton1
5c8fbbaf20 Updated README.md 2022-10-12 19:36:43 +00:00
Tonye Jack
bc00134c62 Merge pull request #681 from tj-actions/fix/668-bug-new-commits-pushed-to-the-base-branch-results-in-errors-when-shallow-history-is-used 2022-10-12 13:36:04 -06:00
Tonye Jack
7ed7f59ca2 Merge branch 'main' into fix/668-bug-new-commits-pushed-to-the-base-branch-results-in-errors-when-shallow-history-is-used 2022-10-12 13:26:29 -06:00
Tonye Jack
5cd49f8c2d Updated the log message 2022-10-12 13:23:59 -06:00
Tonye Jack
2740f4ff1f updated test step name. 2022-10-12 12:57:30 -06:00
Tonye Jack
5b1a2fe1bf Update README.md 2022-10-12 12:51:58 -06:00
Tonye Jack
a0f6ff42fa Merge branch 'main' into fix/668-bug-new-commits-pushed-to-the-base-branch-results-in-errors-when-shallow-history-is-used 2022-10-12 12:49:46 -06:00
Tonye Jack
316681cafb Updated README.md 2022-10-12 12:46:39 -06:00
Tonye Jack
6d2a5c29e8 fix: bug with new commits pushed to the base branch that result in errors when shallow history is used 2022-10-12 12:39:30 -06:00
Logan Pulley
3750c5302c Merge branch 'main' into set-output-github-output 2022-10-12 13:35:25 -05:00
Logan Pulley
a299058164 Combine repeated echos 2022-10-12 13:35:11 -05:00
Tonye Jack
235f02844b Merge pull request #680 from tj-actions/upgrade-to-v32.0.1
Upgraded to v32.0.1
2022-10-12 11:27:28 -06:00
jackton1
a866c7c45e Upgraded from v32.0.0 -> v32.0.1 2022-10-12 17:26:03 +00:00
Logan Pulley
c8b8b3cadf Double-quote $GITHUB_OUTPUT 2022-10-12 11:35:06 -05:00
Logan Pulley
2610be7bb8 Use >>$GITHUB_OUTPUT instead of ::set-output 2022-10-12 11:23:25 -05:00
renovate[bot]
7c640bd299 chore(deps): update tj-actions/glob action to v15 2022-10-11 04:33:52 -06:00
Tonye Jack
0604c7fd87 Updated .github/workflows/greetings.yml 2022-10-06 10:55:39 -06:00
Tonye Jack
e4574f5e38 Merge pull request #676 from tj-actions/upgrade-to-v32.0.0
Upgraded to v32.0.0
2022-10-05 22:54:45 -06:00
jackton1
2e272d0ec7 Upgraded from v31 -> v32.0.0 2022-10-06 04:36:11 +00:00
16 changed files with 897 additions and 433 deletions

View File

@@ -141,6 +141,15 @@
"contributions": [ "contributions": [
"doc" "doc"
] ]
},
{
"login": "lpulley",
"name": "Logan Pulley",
"avatar_url": "https://avatars.githubusercontent.com/u/7193187?v=4",
"profile": "https://github.com/lpulley",
"contributions": [
"code"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,
@@ -148,5 +157,6 @@
"projectOwner": "tj-actions", "projectOwner": "tj-actions",
"repoType": "github", "repoType": "github",
"repoHost": "https://github.com", "repoHost": "https://github.com",
"skipCi": true "skipCi": true,
"commitConvention": "angular"
} }

View File

@@ -16,7 +16,7 @@ jobs:
github.actor == 'renovate' github.actor == 'renovate'
steps: steps:
- name: automerge - name: automerge
uses: pascalgn/automerge-action@v0.15.3 uses: pascalgn/automerge-action@v0.15.5
env: env:
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
MERGE_METHOD: "rebase" MERGE_METHOD: "rebase"

View File

@@ -19,11 +19,6 @@ on:
jobs: jobs:
codacy-security-scan: codacy-security-scan:
# Cancel other workflows that are running for the same branch
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
name: Codacy Security Scan name: Codacy Security Scan
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@@ -6,7 +6,7 @@ jobs:
greeting: greeting:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1.1.0 - uses: actions/first-interaction@v1
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: "Thanks for reporting this issue, don't forget to star this project if you haven't already to help us reach a wider audience." issue-message: "Thanks for reporting this issue, don't forget to star this project if you haven't already to help us reach a wider audience."

View File

@@ -24,7 +24,7 @@ jobs:
echo '${{ steps.changed-files.outputs.all_changed_files }}' echo '${{ steps.changed-files.outputs.all_changed_files }}'
- id: set-matrix - id: set-matrix
run: echo "::set-output name=matrix::{\"container\":${{ steps.changed-files.outputs.all_changed_files }}}" run: echo "matrix={\"container\":${{ steps.changed-files.outputs.all_changed_files }}}" >> "$GITHUB_OUTPUT"
matrix-job: matrix-job:
name: Run Matrix Job name: Run Matrix Job

View File

@@ -19,7 +19,7 @@ jobs:
git submodule update --remote --recursive git submodule update --remote --recursive
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v4.1.3 uses: peter-evans/create-pull-request@v4.2.0
with: with:
title: "Updated submodule" title: "Updated submodule"
branch: "chore/update-submodule" branch: "chore/update-submodule"

View File

@@ -26,7 +26,7 @@ jobs:
with: with:
output: 'HISTORY.md' output: 'HISTORY.md'
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v4.1.3 uses: peter-evans/create-pull-request@v4.2.0
with: with:
base: "main" base: "main"
title: "Upgraded to ${{ steps.sync-release-version.outputs.new_version }}" title: "Upgraded to ${{ steps.sync-release-version.outputs.new_version }}"

View File

@@ -84,6 +84,62 @@ jobs:
shell: shell:
bash bash
test-using-since-and-until:
name: Test changed-files using since and until
runs-on: ${{ matrix.platform }}
if: github.event_name == 'push'
strategy:
fail-fast: false
max-parallel: 4
matrix:
platform: [ubuntu-latest, ubuntu-22.04, windows-latest, macos-latest, macos-11, ubuntu-18.04, windows-2022]
steps:
- name: Checkout to branch
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Run changed-files since 2022-08-19
id: changed-files-since
uses: ./
with:
since: "2022-08-19"
- name: Check output
if: "!contains(steps.changed-files-since.outputs.all_changed_files, '.github/workflows/sync-release-version.yml')"
run: |
echo "Invalid output: Expected to include (.github/workflows/sync-release-version.yml) got (${{ steps.changed-files-since.outputs.all_changed_files }})"
exit 1
shell:
bash
- name: Show output
run: |
echo '${{ toJSON(steps.changed-files-since.outputs) }}'
shell:
bash
- name: Run changed-files until 2022-08-20
id: changed-files-until
uses: ./
with:
until: "2022-08-20"
- name: Check output
if: "!contains(steps.changed-files-until.outputs.all_changed_files, 'entrypoint.sh')"
run: |
echo "Invalid output: Expected to include (entrypoint.sh) got (${{ steps.changed-files-until.outputs.all_changed_files }})"
exit 1
shell:
bash
- name: Show output
run: |
echo '${{ toJSON(steps.changed-files-until.outputs) }}'
shell:
bash
test-similar-base-and-commit-sha: test-similar-base-and-commit-sha:
name: Test changed-files similar base and commit sha name: Test changed-files similar base and commit sha
runs-on: ${{ matrix.platform }} runs-on: ${{ matrix.platform }}
@@ -119,8 +175,8 @@ jobs:
shell: shell:
bash bash
test-single-commit-history: test-unset-github-output-env:
name: Test changed-files single commit history name: Test unset GITHUB_OUTPUT env
runs-on: ${{ matrix.platform }} runs-on: ${{ matrix.platform }}
strategy: strategy:
fail-fast: false fail-fast: false
@@ -132,18 +188,39 @@ jobs:
- name: Checkout to branch - name: Checkout to branch
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
fetch-depth: 1 fetch-depth: 0
- name: Run changed-files with a single commit history - name: Run changed-files with unset GITHUB_OUTPUT env
id: changed-files id: changed-files
continue-on-error: true continue-on-error: true
uses: ./ uses: ./
env:
GITHUB_OUTPUT: ""
- name: Exit with 1 if no error is raised - name: Show output
if: steps.changed-files.outcome != 'failure' && github.event.action == 'closed'
run: | run: |
echo "Expected: (failure) got ${{ steps.changed-files.outcome }}" echo '${{ toJSON(steps.changed-files.outputs) }}'
exit 1 shell:
bash
test-limited-commit-history:
name: Test changed-files with limited commit history
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
max-parallel: 4
matrix:
platform: [ubuntu-latest, ubuntu-22.04, windows-latest, macos-latest, macos-11, ubuntu-18.04, windows-2022]
steps:
- name: Checkout to branch
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Run changed-files with a single commit history
id: changed-files
uses: ./
- name: Show output - name: Show output
run: | run: |
@@ -335,28 +412,6 @@ jobs:
exit 1 exit 1
shell: shell:
bash bash
- name: Run changed-files since 2022-08-19
id: changed-files-since
uses: ./
continue-on-error: true
with:
since: "2022-08-19"
- name: Show output
run: |
echo '${{ toJSON(steps.changed-files-since.outputs) }}'
shell:
bash
- name: Run changed-files until 2022-08-20
id: changed-files-until
uses: ./
continue-on-error: true
with:
until: "2022-08-20"
- name: Show output
run: |
echo '${{ toJSON(steps.changed-files-until.outputs) }}'
shell:
bash
- name: Run changed-files with forward slash separator - name: Run changed-files with forward slash separator
id: changed-files-forward-slash id: changed-files-forward-slash
uses: ./ uses: ./
@@ -816,11 +871,6 @@ jobs:
echo '${{ toJSON(steps.changed-files-custom-sha.outputs) }}' echo '${{ toJSON(steps.changed-files-custom-sha.outputs) }}'
shell: shell:
bash bash
- name: Show output
run: |
echo '${{ toJSON(steps.changed-files-since-last-remote-commit.outputs) }}'
shell:
bash
- name: Get branch name - name: Get branch name
id: branch-name id: branch-name
uses: tj-actions/branch-names@v6 uses: tj-actions/branch-names@v6

View File

@@ -17,7 +17,7 @@ jobs:
uses: tj-actions/remark@v3 uses: tj-actions/remark@v3
- name: Verify Changed files - name: Verify Changed files
uses: tj-actions/verify-changed-files@v11 uses: tj-actions/verify-changed-files@v12
id: verify_changed_files id: verify_changed_files
with: with:
files: | files: |
@@ -31,7 +31,7 @@ jobs:
- name: Create Pull Request - name: Create Pull Request
if: failure() if: failure()
uses: peter-evans/create-pull-request@v4.1.3 uses: peter-evans/create-pull-request@v4.2.0
with: with:
base: "main" base: "main"
title: "Updated README.md" title: "Updated README.md"

View File

@@ -1,12 +1,115 @@
# Changelog # Changelog
## [v31.0.3](https://github.com/tj-actions/changed-files/tree/v31.0.3) (2022-10-02) ## [v33.0.0](https://github.com/tj-actions/changed-files/tree/v33.0.0) (2022-10-21)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v31...v31.0.3) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v33...v33.0.0)
## [v33](https://github.com/tj-actions/changed-files/tree/v33) (2022-10-21)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v32.1.2...v33)
**Fixed bugs:**
- \[BUG\] `GITHUB_EVENT_PULL_REQUEST_BASE_SHA` isn't actually the head of the base branch, and `fetch-depth: 2` fails [\#704](https://github.com/tj-actions/changed-files/issues/704)
**Closed issues:**
- Ability to do a three dots diff [\#702](https://github.com/tj-actions/changed-files/issues/702)
- Dependency Dashboard [\#27](https://github.com/tj-actions/changed-files/issues/27)
**Merged pull requests:**
- chore: update readme [\#706](https://github.com/tj-actions/changed-files/pull/706) ([jackton1](https://github.com/jackton1))
- chore: clean up test [\#705](https://github.com/tj-actions/changed-files/pull/705) ([jackton1](https://github.com/jackton1))
- feat: switch to three dot diff [\#703](https://github.com/tj-actions/changed-files/pull/703) ([jackton1](https://github.com/jackton1))
- Updated README.md [\#701](https://github.com/tj-actions/changed-files/pull/701) ([jackton1](https://github.com/jackton1))
- chore: update readme [\#700](https://github.com/tj-actions/changed-files/pull/700) ([jackton1](https://github.com/jackton1))
- chore\(deps\): update peter-evans/create-pull-request action to v4.2.0 [\#699](https://github.com/tj-actions/changed-files/pull/699) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update pascalgn/automerge-action action to v0.15.5 [\#698](https://github.com/tj-actions/changed-files/pull/698) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update peter-evans/create-pull-request action to v4.1.4 [\#697](https://github.com/tj-actions/changed-files/pull/697) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update tj-actions/verify-changed-files action to v12 [\#696](https://github.com/tj-actions/changed-files/pull/696) ([renovate[bot]](https://github.com/apps/renovate))
- Upgraded to v32.1.2 [\#695](https://github.com/tj-actions/changed-files/pull/695) ([jackton1](https://github.com/jackton1))
## [v32.1.2](https://github.com/tj-actions/changed-files/tree/v32.1.2) (2022-10-16)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v32...v32.1.2)
## [v32](https://github.com/tj-actions/changed-files/tree/v32) (2022-10-16)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v32.1.1...v32)
**Fixed bugs:**
- \[BUG\] Random GITHUB\_OUTPUT: unbound variable in get-sha.sh [\#690](https://github.com/tj-actions/changed-files/issues/690)
**Merged pull requests:**
- chore: clean up test [\#694](https://github.com/tj-actions/changed-files/pull/694) ([jackton1](https://github.com/jackton1))
- fix: bug setting until and since inputs. [\#693](https://github.com/tj-actions/changed-files/pull/693) ([jackton1](https://github.com/jackton1))
- Upgraded to v32.1.1 [\#692](https://github.com/tj-actions/changed-files/pull/692) ([jackton1](https://github.com/jackton1))
## [v32.1.1](https://github.com/tj-actions/changed-files/tree/v32.1.1) (2022-10-14)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v32.1.0...v32.1.1)
**Merged pull requests:**
- feat: remove duplicate files add back support for deprecated set-output [\#691](https://github.com/tj-actions/changed-files/pull/691) ([jackton1](https://github.com/jackton1))
- Upgraded to v32.1.0 [\#687](https://github.com/tj-actions/changed-files/pull/687) ([jackton1](https://github.com/jackton1))
- Updated README.md [\#686](https://github.com/tj-actions/changed-files/pull/686) ([jackton1](https://github.com/jackton1))
## [v32.1.0](https://github.com/tj-actions/changed-files/tree/v32.1.0) (2022-10-12)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v32.0.1...v32.1.0)
**Fixed bugs:**
- \[BUG\] runner is reporting old Node.js version. [\#678](https://github.com/tj-actions/changed-files/issues/678)
- \[BUG\] New commits pushed to the base branch results in errors when shallow history is used. [\#668](https://github.com/tj-actions/changed-files/issues/668)
**Merged pull requests:**
- docs: add lpulley as a contributor for code [\#685](https://github.com/tj-actions/changed-files/pull/685) ([allcontributors[bot]](https://github.com/apps/allcontributors))
- Updated README.md [\#684](https://github.com/tj-actions/changed-files/pull/684) ([jackton1](https://github.com/jackton1))
- chore: update test [\#683](https://github.com/tj-actions/changed-files/pull/683) ([jackton1](https://github.com/jackton1))
- Updated README.md [\#682](https://github.com/tj-actions/changed-files/pull/682) ([jackton1](https://github.com/jackton1))
- fix: bug with new commits pushed to the base branch that result in errors when shallow history is used [\#681](https://github.com/tj-actions/changed-files/pull/681) ([jackton1](https://github.com/jackton1))
- Upgraded to v32.0.1 [\#680](https://github.com/tj-actions/changed-files/pull/680) ([jackton1](https://github.com/jackton1))
- Use `>>$GITHUB_OUTPUT` instead of `::set-output` [\#679](https://github.com/tj-actions/changed-files/pull/679) ([lpulley](https://github.com/lpulley))
## [v32.0.1](https://github.com/tj-actions/changed-files/tree/v32.0.1) (2022-10-11)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v32.0.0...v32.0.1)
**Fixed bugs:**
- \[BUG\] file not ignored with files\_ignore option [\#675](https://github.com/tj-actions/changed-files/issues/675)
**Merged pull requests:**
- chore\(deps\): update tj-actions/glob action to v15 [\#677](https://github.com/tj-actions/changed-files/pull/677) ([renovate[bot]](https://github.com/apps/renovate))
- Upgraded to v32.0.0 [\#676](https://github.com/tj-actions/changed-files/pull/676) ([jackton1](https://github.com/jackton1))
## [v32.0.0](https://github.com/tj-actions/changed-files/tree/v32.0.0) (2022-10-06)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v31...v32.0.0)
**Merged pull requests:**
- Updated README.md [\#674](https://github.com/tj-actions/changed-files/pull/674) ([jackton1](https://github.com/jackton1))
- add kostiantyn-korniienko-aurea as a contributor for doc [\#673](https://github.com/tj-actions/changed-files/pull/673) ([allcontributors[bot]](https://github.com/apps/allcontributors))
- TYPO fix [\#671](https://github.com/tj-actions/changed-files/pull/671) ([kostiantyn-korniienko-aurea](https://github.com/kostiantyn-korniienko-aurea))
- chore\(deps\): update tj-actions/glob action to v14 [\#670](https://github.com/tj-actions/changed-files/pull/670) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update actions/checkout action to v3.1.0 [\#669](https://github.com/tj-actions/changed-files/pull/669) ([renovate[bot]](https://github.com/apps/renovate))
- Upgraded to v31.0.3 [\#667](https://github.com/tj-actions/changed-files/pull/667) ([jackton1](https://github.com/jackton1))
## [v31](https://github.com/tj-actions/changed-files/tree/v31) (2022-10-02) ## [v31](https://github.com/tj-actions/changed-files/tree/v31) (2022-10-02)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v31.0.2...v31) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v31.0.3...v31)
## [v31.0.3](https://github.com/tj-actions/changed-files/tree/v31.0.3) (2022-10-02)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v31.0.2...v31.0.3)
**Fixed bugs:** **Fixed bugs:**
@@ -29,10 +132,6 @@
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v31.0.1...v31.0.2) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v31.0.1...v31.0.2)
**Closed issues:**
- Dependency Dashboard [\#27](https://github.com/tj-actions/changed-files/issues/27)
**Merged pull requests:** **Merged pull requests:**
- chore: add back ability to fetch target branch history [\#654](https://github.com/tj-actions/changed-files/pull/654) ([jackton1](https://github.com/jackton1)) - chore: add back ability to fetch target branch history [\#654](https://github.com/tj-actions/changed-files/pull/654) ([jackton1](https://github.com/jackton1))
@@ -50,7 +149,7 @@
## [v31.0.0](https://github.com/tj-actions/changed-files/tree/v31.0.0) (2022-09-25) ## [v31.0.0](https://github.com/tj-actions/changed-files/tree/v31.0.0) (2022-09-25)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v30...v31.0.0) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v30.0.0...v31.0.0)
**Merged pull requests:** **Merged pull requests:**
@@ -63,13 +162,13 @@
- chore: update broken link [\#642](https://github.com/tj-actions/changed-files/pull/642) ([jackton1](https://github.com/jackton1)) - chore: update broken link [\#642](https://github.com/tj-actions/changed-files/pull/642) ([jackton1](https://github.com/jackton1))
- Upgraded to v30.0.0 [\#641](https://github.com/tj-actions/changed-files/pull/641) ([jackton1](https://github.com/jackton1)) - Upgraded to v30.0.0 [\#641](https://github.com/tj-actions/changed-files/pull/641) ([jackton1](https://github.com/jackton1))
## [v30](https://github.com/tj-actions/changed-files/tree/v30) (2022-09-24)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v30.0.0...v30)
## [v30.0.0](https://github.com/tj-actions/changed-files/tree/v30.0.0) (2022-09-24) ## [v30.0.0](https://github.com/tj-actions/changed-files/tree/v30.0.0) (2022-09-24)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v29.0.9...v30.0.0) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v30...v30.0.0)
## [v30](https://github.com/tj-actions/changed-files/tree/v30) (2022-09-24)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v29.0.9...v30)
**Fixed bugs:** **Fixed bugs:**
@@ -950,7 +1049,7 @@
## [v13](https://github.com/tj-actions/changed-files/tree/v13) (2022-02-17) ## [v13](https://github.com/tj-actions/changed-files/tree/v13) (2022-02-17)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v12.2...v13) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v2.0.1...v13)
**Implemented enhancements:** **Implemented enhancements:**
@@ -969,13 +1068,13 @@
- \[BUG\] wrong result of any\_change output [\#314](https://github.com/tj-actions/changed-files/issues/314) - \[BUG\] wrong result of any\_change output [\#314](https://github.com/tj-actions/changed-files/issues/314)
- \[BUG\] Investigate possible bug using since\_last\_remote\_commit when force pushing changes. [\#303](https://github.com/tj-actions/changed-files/issues/303) - \[BUG\] Investigate possible bug using since\_last\_remote\_commit when force pushing changes. [\#303](https://github.com/tj-actions/changed-files/issues/303)
## [v12.2](https://github.com/tj-actions/changed-files/tree/v12.2) (2021-12-30)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v2.0.1...v12.2)
## [v2.0.1](https://github.com/tj-actions/changed-files/tree/v2.0.1) (2021-12-30) ## [v2.0.1](https://github.com/tj-actions/changed-files/tree/v2.0.1) (2021-12-30)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v12.1...v2.0.1) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v12.2...v2.0.1)
## [v12.2](https://github.com/tj-actions/changed-files/tree/v12.2) (2021-12-30)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v12.1...v12.2)
**Merged pull requests:** **Merged pull requests:**
@@ -1016,7 +1115,7 @@
## [v12](https://github.com/tj-actions/changed-files/tree/v12) (2021-12-14) ## [v12](https://github.com/tj-actions/changed-files/tree/v12) (2021-12-14)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v11...v12) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v11.9...v12)
**Implemented enhancements:** **Implemented enhancements:**
@@ -1034,13 +1133,13 @@
- \[PR 1\]: Renamed all\_modified\_files to all\_changed\_files [\#283](https://github.com/tj-actions/changed-files/pull/283) ([jackton1](https://github.com/jackton1)) - \[PR 1\]: Renamed all\_modified\_files to all\_changed\_files [\#283](https://github.com/tj-actions/changed-files/pull/283) ([jackton1](https://github.com/jackton1))
- Upgraded to v11.9 [\#280](https://github.com/tj-actions/changed-files/pull/280) ([jackton1](https://github.com/jackton1)) - Upgraded to v11.9 [\#280](https://github.com/tj-actions/changed-files/pull/280) ([jackton1](https://github.com/jackton1))
## [v11](https://github.com/tj-actions/changed-files/tree/v11) (2021-12-04)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v11.9...v11)
## [v11.9](https://github.com/tj-actions/changed-files/tree/v11.9) (2021-12-04) ## [v11.9](https://github.com/tj-actions/changed-files/tree/v11.9) (2021-12-04)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v1.3.1...v11.9) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v11...v11.9)
## [v11](https://github.com/tj-actions/changed-files/tree/v11) (2021-12-04)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v1.3.1...v11)
**Implemented enhancements:** **Implemented enhancements:**
@@ -1129,7 +1228,7 @@
## [v1.2.1](https://github.com/tj-actions/changed-files/tree/v1.2.1) (2021-11-08) ## [v1.2.1](https://github.com/tj-actions/changed-files/tree/v1.2.1) (2021-11-08)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v1.2.0...v1.2.1) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v11.5...v1.2.1)
**Implemented enhancements:** **Implemented enhancements:**
@@ -1143,13 +1242,13 @@
- Update actions/checkout action to v2.4.0 [\#243](https://github.com/tj-actions/changed-files/pull/243) ([renovate[bot]](https://github.com/apps/renovate)) - Update actions/checkout action to v2.4.0 [\#243](https://github.com/tj-actions/changed-files/pull/243) ([renovate[bot]](https://github.com/apps/renovate))
- Upgraded to v11.5 [\#241](https://github.com/tj-actions/changed-files/pull/241) ([jackton1](https://github.com/jackton1)) - Upgraded to v11.5 [\#241](https://github.com/tj-actions/changed-files/pull/241) ([jackton1](https://github.com/jackton1))
## [v1.2.0](https://github.com/tj-actions/changed-files/tree/v1.2.0) (2021-10-30)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v11.5...v1.2.0)
## [v11.5](https://github.com/tj-actions/changed-files/tree/v11.5) (2021-10-30) ## [v11.5](https://github.com/tj-actions/changed-files/tree/v11.5) (2021-10-30)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v11.4...v11.5) [Full Changelog](https://github.com/tj-actions/changed-files/compare/v1.2.0...v11.5)
## [v1.2.0](https://github.com/tj-actions/changed-files/tree/v1.2.0) (2021-10-30)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v11.4...v1.2.0)
**Merged pull requests:** **Merged pull requests:**

329
README.md
View File

@@ -7,13 +7,13 @@
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-) [![All Contributors](https://img.shields.io/badge/all_contributors-16-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END --> <!-- ALL-CONTRIBUTORS-BADGE:END -->
## changed-files ## changed-files
Retrieve all changed files and directories relative to the target branch (`pull_request*` based events) or the last remote commit (`push` or `pull_request*` based event) returning the **absolute path** to all changed files and directories from the project root. Retrieve all changed files and directories relative to the target branch or the last remote commit returning the **absolute path** from the project root.
## Features ## Features
@@ -69,7 +69,7 @@ jobs:
# Example 1 # Example 1
- name: Get changed files - name: Get changed files
id: changed-files id: changed-files
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
- name: List all changed files - name: List all changed files
run: | run: |
@@ -80,7 +80,7 @@ jobs:
# Example 2 # Example 2
- name: Get changed files in the docs folder - name: Get changed files in the docs folder
id: changed-files-specific id: changed-files-specific
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
files: | files: |
docs/** docs/**
@@ -116,7 +116,7 @@ Support this project with a :star:
| X | Unknown | | X | Unknown |
| Output | type | example | description | | Output | type | example | description |
|:----------------------------------:|:--------:|:--------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| |:----------------------------------:|:--------:|:--------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| any\_changed | `string` | `true` OR `false` | Returns `true` when any <br /> of the filenames provided using <br /> the `files` input has changed. If no `files` have been specified,<br> an empty string `''` is returned. <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* | | any\_changed | `string` | `true` OR `false` | Returns `true` when any <br /> of the filenames provided using <br /> the `files` input has changed. If no `files` have been specified,<br> an empty string `''` is returned. <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* |
| only\_changed | `string` | `true` OR `false` | Returns `true` when only <br /> files provided using <br /> the `files` input has changed. If no `files` have been specified,<br> an empty string `''` is returned. <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* | | only\_changed | `string` | `true` OR `false` | Returns `true` when only <br /> files provided using <br /> the `files` input has changed. If no `files` have been specified,<br> an empty string `''` is returned. <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* |
| other\_changed\_files | `string` | `'new.txt path/to/file.png ...'` | Returns all other changed files <br/> not listed in the files input <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* | | other\_changed\_files | `string` | `'new.txt path/to/file.png ...'` | Returns all other changed files <br/> not listed in the files input <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* |
@@ -142,7 +142,7 @@ Support this project with a :star:
## Inputs ## Inputs
| Input | type | required | default | description | | Input | type | required | default | description |
|:--------------------------------------:|:----------------------:|:--------:|:---------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| |:--------------------------------------:|:----------------------:|:--------:|:-------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| separator | `string` | `false` | `' '` | Split character for output strings | | separator | `string` | `false` | `' '` | Split character for output strings |
| include\_all\_old\_new\_renamed\_files | `boolean` | `false` | `false` | Include `all_old_new_renamed_files` output. Note this can generate a large output See: [#501](https://github.com/tj-actions/changed-files/issues/501). | | include\_all\_old\_new\_renamed\_files | `boolean` | `false` | `false` | Include `all_old_new_renamed_files` output. Note this can generate a large output See: [#501](https://github.com/tj-actions/changed-files/issues/501). |
| old\_new\_separator | `string` | `false` | `','` | Split character for old and new filename pairs | | old\_new\_separator | `string` | `false` | `','` | Split character for old and new filename pairs |
@@ -162,59 +162,120 @@ Support this project with a :star:
| json | `boolean` | `false` | `false` | Output changed files in JSON format which can be used for [matrix jobs](https://github.com/tj-actions/changed-files/blob/main/.github/workflows/manual-matrix-test.yml). | | json | `boolean` | `false` | `false` | Output changed files in JSON format which can be used for [matrix jobs](https://github.com/tj-actions/changed-files/blob/main/.github/workflows/manual-matrix-test.yml). |
| since | `string` | `false` | | Get changed files for commits whose timestamp is older than the given time. | | since | `string` | `false` | | Get changed files for commits whose timestamp is older than the given time. |
| until | `string` | `false` | | Get changed files for commits whose timestamp is earlier than the given time. | | until | `string` | `false` | | Get changed files for commits whose timestamp is earlier than the given time. |
| max\_fetch\_depth | `string` | `false` | `120` | Max limit for fetching branch history. **NOTE**: This can be adjusted to resolve errors with insufficient history. |
## Examples ## Examples
<details>
<summary>Get all changed files in the current branch</summary>
```yaml ```yaml
... ...
steps: - name: Get changed files
- uses: actions/checkout@v3
with:
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
# submodules: true # OR "recursive" -> To include all changed submodule files.
- name: Get changed files using defaults
id: changed-files id: changed-files
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
...
```
- name: Get changed files using a comma separator </details>
id: changed-files-comma
uses: tj-actions/changed-files@v31 <details>
<summary>Get all changed files and using a comma separator</summary>
```yaml
...
- name: Get all changed files and use a comma separator in the output
id: changed-files
uses: tj-actions/changed-files@v33
with: with:
separator: "," separator: ","
...
```
See [inputs](#inputs) for more information.
</details>
<details>
<summary> Get all changed files and list all added files</summary>
```yaml
...
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v33
- name: List all added files - name: List all added files
run: | run: |
for file in ${{ steps.changed-files.outputs.added_files }}; do for file in ${{ steps.changed-files.outputs.added_files }}; do
echo "$file was added" echo "$file was added"
done done
...
```
- name: Run step when a file changes See [outputs](#outputs) for a list of all available outputs.
</details>
<details>
<summary>Get all changed files and optionally run a step if a file was modified</summary>
```yaml
...
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v33
- name: Run a step if my-file.txt was modified
if: contains(steps.changed-files.outputs.modified_files, 'my-file.txt') if: contains(steps.changed-files.outputs.modified_files, 'my-file.txt')
run: | run: |
echo "Your my-file.txt file has been modified." echo "my-file.txt file has been modified."
...
```
- name: Run step when a file has been deleted See [outputs](#outputs) for a list of all available outputs.
if: contains(steps.changed-files.outputs.deleted_files, 'test.txt')
run: |
echo "Your test.txt file has been deleted."
- name: Get specific changed files </details>
id: changed-files-specific
uses: tj-actions/changed-files@v31 <details>
<summary>Get all changed files using a list of files</summary>
```yaml
...
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v33
with: with:
files: | files: |
my-file.txt my-file.txt
test.txt
new.txt
test_directory
*.sh *.sh
*.png *.png
!*.md !*.md
*.jpeg test_directory
**/migrate-*.sql **/*.sql
files_ignore: | ...
*.yml ```
See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files using a list of files and take action base on the changes</summary>
```yaml
...
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v33
with:
files: |
my-file.txt
*.sh
*.png
!*.md
test_directory
**/*.sql
- name: Run step if any of the listed files above change - name: Run step if any of the listed files above change
if: steps.changed-files-specific.outputs.any_changed == 'true' if: steps.changed-files-specific.outputs.any_changed == 'true'
@@ -239,44 +300,100 @@ Support this project with a :star:
for file in ${{ steps.changed-files.outputs.deleted_files }}; do for file in ${{ steps.changed-files.outputs.deleted_files }}; do
echo "$file was deleted" echo "$file was deleted"
done done
...
```
- name: Use a source file or list of file(s) to populate to files input. See [outputs](#outputs) for a list of all available outputs.
</details>
<details>
<summary>Get all changed files using a source file or list of file(s) to populate to files input</summary>
```yaml
...
- name: Get changed files using a source file or list of file(s) to populate to files input.
id: changed-files-specific-source-file id: changed-files-specific-source-file
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
files_from_source_file: | files_from_source_file: |
test/changed-files-list.txt test/changed-files-list.txt
...
```
- name: Use a source file or list of file(s) to populate to files input and optionally specify more files. See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get changed files using a source file or list of file(s) to populate to files input and optionally specify more files</summary>
```yaml
...
- name: Get changed files using a source file or list of file(s) to populate to files input and optionally specify more files.
id: changed-files-specific-source-file-and-specify-files id: changed-files-specific-source-file-and-specify-files
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
files_from_source_file: | files_from_source_file: |
test/changed-files-list.txt test/changed-files-list.txt
files: | files: |
test.txt test.txt
...
```
- name: Use a different commit SHA See [inputs](#inputs) for more information.
id: changed-files-custom-sha
uses: tj-actions/changed-files@v31 </details>
<details>
<summary>Get all changed files using a different SHA</summary>
```yaml
...
- name: Get changed files using a different SHA
id: changed-files
uses: tj-actions/changed-files@v33
with: with:
sha: ${{ github.event.pull_request.head.sha }} sha: ${{ github.event.pull_request.head.sha }}
...
```
- name: Use a different base SHA See [inputs](#inputs) for more information.
id: changed-files-custom-base-sha
uses: tj-actions/changed-files@v31 </details>
<details>
<summary>Get all changed files using a different base SHA</summary>
```yaml
...
- name: Get changed files using a different base SHA
id: changed-files
uses: tj-actions/changed-files@v33
with: with:
base_sha: ${{ github.event.pull_request.base.sha }} base_sha: ${{ github.event.pull_request.base.sha }}
...
```
See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files for a repository located in a different path</summary>
```yaml
...
- name: Checkout into dir1 - name: Checkout into dir1
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
fetch-depth: 0 fetch-depth: 0
path: dir1 path: dir1
- name: Run changed-files with defaults on the dir1 - name: Run changed-files with defaults in dir1
id: changed-files-for-dir1 id: changed-files-for-dir1
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
path: dir1 path: dir1
@@ -285,18 +402,47 @@ Support this project with a :star:
for file in ${{ steps.changed-files-for-dir1.outputs.added_files }}; do for file in ${{ steps.changed-files-for-dir1.outputs.added_files }}; do
echo "$file was added" echo "$file was added"
done done
...
```
See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files with non äšćįí characters i.e (Filename in other languages)</summary>
```yaml
...
- name: Run changed-files with quotepath disabled - name: Run changed-files with quotepath disabled
id: changed-files-quotepath id: changed-files-quotepath
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
quotepath: "false" quotepath: "false"
# Run changed-files action using the last successful commit as the base_sha - name: Run changed-files with quotepath disabled for a specified list of file(s)
# NOTE: This setting overrides the commit sha used by setting since_last_remote_commit to true. id: changed-files-quotepath-specific
# It is recommended to use either solution that works for your use case. uses: ./
with:
files: test/test-è.txt
quotepath: "false"
...
```
# Push event based workflows See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files using the last successful commit of the base branch</summary>
<ul>
<li>
<details>
<summary>Push event</summary>
```yaml
...
- name: Get branch name - name: Get branch name
id: branch-name id: branch-name
uses: tj-actions/branch-names@v6 uses: tj-actions/branch-names@v6
@@ -310,57 +456,110 @@ Support this project with a :star:
- name: Run changed-files with the commit of the last successful test workflow run - name: Run changed-files with the commit of the last successful test workflow run
id: changed-files-base-sha-push id: changed-files-base-sha-push
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
base_sha: ${{ steps.last_successful_commit_push.outputs.commit_hash }} base_sha: ${{ steps.last_successful_commit_push.outputs.commit_hash }}
...
```
# Pull request based workflows. </details>
</li>
<li>
<details>
<summary>Pull request events </summary>
```yaml
...
- name: Get branch name - name: Get branch name
id: branch-name id: branch-name
uses: tj-actions/branch-names@v5 uses: tj-actions/branch-names@v5
if: github.event_name == 'pull_request'
- uses: nrwl/last-successful-commit-action@v1 - uses: nrwl/last-successful-commit-action@v1
id: last_successful_commit_pull_request id: last_successful_commit_pull_request
if: github.event_name == 'pull_request'
with: with:
branch: ${{ steps.branch-name.outputs.base_ref_branch }} # Get the last successful commit on master or main branch branch: ${{ steps.branch-name.outputs.base_ref_branch }} # Get the last successful commit on master or main branch
workflow_id: 'test.yml' workflow_id: 'test.yml'
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Run changed-files with the commit of the last successful test workflow run on main - name: Run changed-files with the commit of the last successful test workflow run on main
if: github.event_name == 'pull_request'
id: changed-files-base-sha-pull-request id: changed-files-base-sha-pull-request
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
base_sha: ${{ steps.last_successful_commit_pull_request.outputs.commit_hash }} base_sha: ${{ steps.last_successful_commit_pull_request.outputs.commit_hash }}
...
```
</details>
</li>
</ul>
> NOTE: This setting overrides the commit sha used by setting `since_last_remote_commit` to true.
> It is recommended to use either solution that works for your use case.
See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files but only return the directory names</summary>
```yaml
...
- name: Run changed-files with dir_names - name: Run changed-files with dir_names
id: changed-files-dir-names id: changed-files-dir-names
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
dir_names: "true" dir_names: "true"
...
```
# All outputs are JSON formatted arrays and can be used in other actions and matrix compatible jobs. See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files and return JSON formatted outputs</summary>
```yaml
...
- name: Run changed-files with json output - name: Run changed-files with json output
id: changed-files-json id: changed-files-json
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
json: "true" json: "true"
...
```
- name: Run changed-files since 2022-08-19 See [inputs](#inputs) for more information.
</details>
<details>
<summary>Get all changed files by commits pushed in the past</summary>
```yaml
...
- name: Get changed-files since 2022-08-19
id: changed-files-since id: changed-files-since
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
since: "2022-08-19" since: "2022-08-19"
- name: Run changed-files until 2022-08-20 - name: Get changed-files until 2022-08-20
id: changed-files-until id: changed-files-until
uses: tj-actions/changed-files@v31 uses: tj-actions/changed-files@v33
with: with:
until: "2022-08-20" until: "2022-08-20"
...
``` ```
See [inputs](#inputs) for more information.
</details>
### Real world example
<img width="1147" alt="Screen Shot 2021-11-19 at 4 59 21 PM" src="https://user-images.githubusercontent.com/17484350/142696936-8b7ca955-7ef9-4d53-9bdf-3e0008e90c3f.png"> <img width="1147" alt="Screen Shot 2021-11-19 at 4 59 21 PM" src="https://user-images.githubusercontent.com/17484350/142696936-8b7ca955-7ef9-4d53-9bdf-3e0008e90c3f.png">
* Free software: [MIT license](LICENSE) * Free software: [MIT license](LICENSE)
@@ -424,11 +623,9 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
</tr> </tr>
<tr> <tr>
<td align="center"><a href="https://github.com/kostiantyn-korniienko-aurea"><img src="https://avatars.githubusercontent.com/u/37180625?v=4?s=100" width="100px;" alt="Kostiantyn Korniienko"/><br /><sub><b>Kostiantyn Korniienko</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=kostiantyn-korniienko-aurea" title="Documentation">📖</a></td> <td align="center"><a href="https://github.com/kostiantyn-korniienko-aurea"><img src="https://avatars.githubusercontent.com/u/37180625?v=4?s=100" width="100px;" alt="Kostiantyn Korniienko"/><br /><sub><b>Kostiantyn Korniienko</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=kostiantyn-korniienko-aurea" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/lpulley"><img src="https://avatars.githubusercontent.com/u/7193187?v=4?s=100" width="100px;" alt="Logan Pulley"/><br /><sub><b>Logan Pulley</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=lpulley" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
<tfoot>
</tfoot>
</table> </table>
<!-- markdownlint-restore --> <!-- markdownlint-restore -->

View File

@@ -77,6 +77,10 @@ inputs:
description: "Output changed files in JSON format which can be used for matrix jobs" description: "Output changed files in JSON format which can be used for matrix jobs"
required: false required: false
default: "false" default: "false"
max_fetch_depth:
description: "Max limit for fetching branch history. **NOTE**: This can be adjusted to resolve errors with insufficient history."
required: false
default: "120"
outputs: outputs:
added_files: added_files:
@@ -146,33 +150,6 @@ outputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
- run: |
# "Calculate the base sha..."
bash $GITHUB_ACTION_PATH/get-base-sha.sh
id: base-sha
shell: bash
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
GITHUB_EVENT_FORCED : ${{ github.event.forced }}
# INPUT_<VARIABLE_NAME> is not available in Composite run steps
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs
INPUT_SINCE: ${{ inputs.since }}
INPUT_BASE_SHA: ${{ inputs.base_sha }}
INPUT_SHA: ${{ inputs.sha }}
INPUT_PATH: ${{ inputs.path }}
- run: |
# "Calculate the sha..."
bash $GITHUB_ACTION_PATH/get-sha.sh
id: sha
shell: bash
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
# INPUT_<VARIABLE_NAME> is not available in Composite run steps
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs
INPUT_UNTIL: ${{ inputs.until }}
INPUT_SHA: ${{ inputs.sha }}
INPUT_PATH: ${{ inputs.path }}
- run: | - run: |
# "Calculating the previous and current SHA..." # "Calculating the previous and current SHA..."
bash $GITHUB_ACTION_PATH/diff-sha.sh bash $GITHUB_ACTION_PATH/diff-sha.sh
@@ -184,16 +161,19 @@ runs:
GITHUB_BASE_REF: ${{ github.base_ref }} GITHUB_BASE_REF: ${{ github.base_ref }}
GITHUB_HEAD_REF: ${{ github.head_ref }} GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_WORKSPACE: ${{ github.workspace }} GITHUB_WORKSPACE: ${{ github.workspace }}
GITHUB_PULL_REQUEST_BASE_SHA: ${{ github.event.pull_request.base.sha }} GITHUB_EVENT_PULL_REQUEST_BASE_SHA: ${{ github.event.pull_request.base.sha }}
GITHUB_EVENT_BEFORE: ${{ github.event.before }} GITHUB_EVENT_BEFORE: ${{ github.event.before }}
GITHUB_EVENT_FORCED: ${{ github.event.forced }} GITHUB_EVENT_FORCED: ${{ github.event.forced }}
# INPUT_<VARIABLE_NAME> is not available in Composite run steps # INPUT_<VARIABLE_NAME> is not available in Composite run steps
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs # https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs
INPUT_SHA: ${{ steps.sha.outputs.sha }} INPUT_SHA: ${{ inputs.sha }}
INPUT_BASE_SHA: ${{ steps.base-sha.outputs.base_sha }} INPUT_BASE_SHA: ${{ inputs.base_sha }}
INPUT_SINCE: ${{ inputs.since }}
INPUT_UNTIL: ${{ inputs.until }}
INPUT_PATH: ${{ inputs.path }} INPUT_PATH: ${{ inputs.path }}
INPUT_MAX_FETCH_DEPTH: ${{ inputs.max_fetch_depth }}
- name: Glob match - name: Glob match
uses: tj-actions/glob@v14 uses: tj-actions/glob@v15
id: glob id: glob
with: with:
files: ${{ inputs.files }} files: ${{ inputs.files }}
@@ -214,6 +194,7 @@ runs:
shell: bash shell: bash
env: env:
GITHUB_WORKSPACE: ${{ github.workspace }} GITHUB_WORKSPACE: ${{ github.workspace }}
GITHUB_BASE_REF: ${{ github.base_ref }}
# INPUT_<VARIABLE_NAME> is not available in Composite run steps # INPUT_<VARIABLE_NAME> is not available in Composite run steps
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs # https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs
INPUT_FILES_PATTERN_FILE: ${{ steps.glob.outputs.paths-output-file }} INPUT_FILES_PATTERN_FILE: ${{ steps.glob.outputs.paths-output-file }}

View File

@@ -3,6 +3,7 @@
set -eu set -eu
INITIAL_COMMIT="false" INITIAL_COMMIT="false"
GITHUB_OUTPUT=${GITHUB_OUTPUT:-""}
echo "::group::changed-files-diff-sha" echo "::group::changed-files-diff-sha"
@@ -39,11 +40,21 @@ fi
echo "::debug::Getting HEAD SHA..." echo "::debug::Getting HEAD SHA..."
if [[ -n "$INPUT_UNTIL" ]]; then
echo "::debug::Getting HEAD SHA for '$INPUT_UNTIL'..."
CURRENT_SHA=$(git log -1 --format="%H" --date=local --until="$INPUT_UNTIL") && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Invalid until date: $INPUT_UNTIL"
exit 1
fi
else
if [[ -z $INPUT_SHA ]]; then if [[ -z $INPUT_SHA ]]; then
CURRENT_SHA=$(git rev-list -n 1 "HEAD" 2>&1) && exit_status=$? || exit_status=$? CURRENT_SHA=$(git rev-list -n 1 "HEAD" 2>&1) && exit_status=$? || exit_status=$?
else else
CURRENT_SHA=$INPUT_SHA; exit_status=$? CURRENT_SHA=$INPUT_SHA; exit_status=$?
fi fi
fi
echo "::debug::Verifying the current commit SHA: $CURRENT_SHA" echo "::debug::Verifying the current commit SHA: $CURRENT_SHA"
git rev-parse --quiet --verify "$CURRENT_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$? git rev-parse --quiet --verify "$CURRENT_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
@@ -56,13 +67,41 @@ else
echo "::debug::Current SHA: $CURRENT_SHA" echo "::debug::Current SHA: $CURRENT_SHA"
fi fi
function deepenShallowCloneToFindCommit() {
local ref="$1"
local target_branch="$2"
local depth=20
local max_depth=$INPUT_MAX_FETCH_DEPTH
while ! git rev-parse --quiet --verify "$ref^{commit}" &>/dev/null; do # !0 = true = not found
echo "::debug::Unable to find commit '$ref' in shallow clone. Increasing depth to $((depth * 2))..."
depth=$((depth * 2))
if [[ $depth -gt $max_depth ]]; then
echo "::error::Unable to find commit '$ref' in shallow clone. Maximum depth of $max_depth reached."
exit 1
fi
git fetch --no-tags -u --progress --deepen="$depth" origin "$target_branch":"$target_branch"
done
}
if [[ -z $GITHUB_BASE_REF ]]; then if [[ -z $GITHUB_BASE_REF ]]; then
echo "Running on a push event..." echo "Running on a push event..."
TARGET_BRANCH=${GITHUB_REF/refs\/heads\//} && exit_status=$? || exit_status=$? TARGET_BRANCH=${GITHUB_REF/refs\/heads\//} && exit_status=$? || exit_status=$?
CURRENT_BRANCH=$TARGET_BRANCH && exit_status=$? || exit_status=$? CURRENT_BRANCH=$TARGET_BRANCH && exit_status=$? || exit_status=$?
if [[ -z $INPUT_BASE_SHA ]]; then if [[ -z $INPUT_BASE_SHA ]]; then
git fetch --no-tags -u --progress origin --depth=2 "${TARGET_BRANCH}":"${TARGET_BRANCH}" && exit_status=$? || exit_status=$? if [[ -n "$INPUT_SINCE" ]]; then
echo "::debug::Getting base SHA for '$INPUT_SINCE'..."
PREVIOUS_SHA=$(git log --format="%H" --date=local --since="$INPUT_SINCE" | tail -1) && exit_status=$? || exit_status=$?
if [[ -z "$PREVIOUS_SHA" ]]; then
echo "::error::Unable to locate a previous commit for the specified date: $INPUT_SINCE"
exit 1
fi
else
PREVIOUS_SHA="" PREVIOUS_SHA=""
if [[ "$GITHUB_EVENT_FORCED" == "false" ]]; then if [[ "$GITHUB_EVENT_FORCED" == "false" ]]; then
@@ -81,6 +120,12 @@ if [[ -z $GITHUB_BASE_REF ]]; then
echo "::debug::Initial commit detected" echo "::debug::Initial commit detected"
fi fi
fi fi
if [[ -z "$PREVIOUS_SHA" ]]; then
echo "::error::Unable to locate a previous commit"
exit 1
fi
fi
else else
PREVIOUS_SHA=$INPUT_BASE_SHA PREVIOUS_SHA=$INPUT_BASE_SHA
TARGET_BRANCH=$(git name-rev --name-only "$PREVIOUS_SHA" 2>&1) && exit_status=$? || exit_status=$? TARGET_BRANCH=$(git name-rev --name-only "$PREVIOUS_SHA" 2>&1) && exit_status=$? || exit_status=$?
@@ -90,6 +135,9 @@ if [[ -z $GITHUB_BASE_REF ]]; then
echo "::debug::Target branch $TARGET_BRANCH..." echo "::debug::Target branch $TARGET_BRANCH..."
echo "::debug::Current branch $CURRENT_BRANCH..." echo "::debug::Current branch $CURRENT_BRANCH..."
echo "::debug::Fetching previous commit SHA: $PREVIOUS_SHA"
deepenShallowCloneToFindCommit "$PREVIOUS_SHA" "$TARGET_BRANCH"
echo "::debug::Verifying the previous commit SHA: $PREVIOUS_SHA" echo "::debug::Verifying the previous commit SHA: $PREVIOUS_SHA"
git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$? git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
@@ -103,20 +151,19 @@ else
TARGET_BRANCH=$GITHUB_BASE_REF TARGET_BRANCH=$GITHUB_BASE_REF
CURRENT_BRANCH=$GITHUB_HEAD_REF CURRENT_BRANCH=$GITHUB_HEAD_REF
echo "::debug::GITHUB_BASE_REF: $TARGET_BRANCH..."
if [[ -z $INPUT_BASE_SHA ]]; then if [[ -z $INPUT_BASE_SHA ]]; then
git fetch --no-tags -u --progress origin --depth=1 "${TARGET_BRANCH}":"${TARGET_BRANCH}" && exit_status=$? || exit_status=$? PREVIOUS_SHA=$GITHUB_EVENT_PULL_REQUEST_BASE_SHA && exit_status=$? || exit_status=$?
PREVIOUS_SHA=$GITHUB_PULL_REQUEST_BASE_SHA && exit_status=$? || exit_status=$?
echo "::debug::Previous SHA: $PREVIOUS_SHA" echo "::debug::Previous SHA: $PREVIOUS_SHA"
else else
git fetch --no-tags -u --progress origin --depth=1 "$(git rev-parse --verify "$INPUT_BASE_SHA")" && exit_status=$? || exit_status=$? PREVIOUS_SHA=$INPUT_BASE_SHA && exit_status=$? || exit_status=$?
PREVIOUS_SHA=$INPUT_BASE_SHA
TARGET_BRANCH=$(git name-rev --name-only "$PREVIOUS_SHA" 2>&1) && exit_status=$? || exit_status=$?
echo "::debug::Previous SHA: $PREVIOUS_SHA"
echo "::debug::Target branch: $TARGET_BRANCH"
fi fi
echo "::debug::Target branch: $TARGET_BRANCH"
echo "::debug::Current branch: $CURRENT_BRANCH"
echo "::debug::Fetching previous commit SHA: $PREVIOUS_SHA"
deepenShallowCloneToFindCommit "$PREVIOUS_SHA" "$TARGET_BRANCH"
echo "::debug::Verifying the previous commit SHA: $PREVIOUS_SHA" echo "::debug::Verifying the previous commit SHA: $PREVIOUS_SHA"
git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$? git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
@@ -133,9 +180,18 @@ if [[ -n "$PREVIOUS_SHA" && -n "$CURRENT_SHA" && "$PREVIOUS_SHA" == "$CURRENT_SH
exit 1 exit 1
fi fi
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=target_branch::$TARGET_BRANCH" echo "::set-output name=target_branch::$TARGET_BRANCH"
echo "::set-output name=current_branch::$CURRENT_BRANCH" echo "::set-output name=current_branch::$CURRENT_BRANCH"
echo "::set-output name=previous_sha::$PREVIOUS_SHA" echo "::set-output name=previous_sha::$PREVIOUS_SHA"
echo "::set-output name=current_sha::$CURRENT_SHA" echo "::set-output name=current_sha::$CURRENT_SHA"
else
cat <<EOF >> "$GITHUB_OUTPUT"
target_branch=$TARGET_BRANCH
current_branch=$CURRENT_BRANCH
previous_sha=$PREVIOUS_SHA
current_sha=$CURRENT_SHA
EOF
fi
echo "::endgroup::" echo "::endgroup::"

View File

@@ -1,24 +0,0 @@
#!/usr/bin/env bash
set -eu
if [[ -n $INPUT_PATH ]]; then
REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH"
echo "Resolving repository path: $REPO_DIR"
if [[ ! -d "$REPO_DIR" ]]; then
echo "::error::Invalid repository path: $REPO_DIR"
exit 1
fi
cd "$REPO_DIR"
fi
if [[ -n "$INPUT_SINCE" ]]; then
BASE_SHA=$(git log --format="%H" --date=local --since="$INPUT_SINCE" --reverse | head -n 1)
if [[ -z "$BASE_SHA" ]]; then
echo "::warning::The BASE_SHA for date '$INPUT_SINCE' couldn't be determined."
fi
echo "::set-output name=base_sha::$BASE_SHA"
elif [[ -n "$INPUT_BASE_SHA" ]]; then
echo "::set-output name=base_sha::$INPUT_BASE_SHA"
fi

View File

@@ -7,6 +7,13 @@ INPUT_SEPARATOR="${INPUT_SEPARATOR//'.'/'%2E'}"
INPUT_SEPARATOR="${INPUT_SEPARATOR//$'\n'/'%0A'}" INPUT_SEPARATOR="${INPUT_SEPARATOR//$'\n'/'%0A'}"
INPUT_SEPARATOR="${INPUT_SEPARATOR//$'\r'/'%0D'}" INPUT_SEPARATOR="${INPUT_SEPARATOR//$'\r'/'%0D'}"
GITHUB_OUTPUT=${GITHUB_OUTPUT:-""}
DIFF="..."
if [[ -z $GITHUB_BASE_REF ]]; then
DIFF=".."
fi
if [[ $INPUT_QUOTEPATH == "false" ]]; then if [[ $INPUT_QUOTEPATH == "false" ]]; then
git config --global core.quotepath off git config --global core.quotepath off
else else
@@ -18,12 +25,23 @@ if [[ -n $INPUT_DIFF_RELATIVE ]]; then
fi fi
function get_diff() { function get_diff() {
base="$1" local base="$1"
sha="$2" local sha="$2"
filter="$3" local filter="$3"
while IFS='' read -r sub; do while IFS='' read -r sub; do
sub_commit_pre="$(git diff "$base" "$sha" -- "$sub" | grep '^[-]Subproject commit' | awk '{print $3}')" sub_commit_pre="$(git diff "$base$DIFF$sha" -- "$sub" | grep '^[-]Subproject commit' | awk '{print $3}')" && exit_status=$? || exit_status=$?
sub_commit_cur="$(git diff "$base" "$sha" -- "$sub" | grep '^[+]Subproject commit' | awk '{print $3}')" if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get previous commit for submodule ($sub) between: $base$DIFF$sha"
exit 1
fi
sub_commit_cur="$(git diff "$base$DIFF$sha" -- "$sub" | grep '^[+]Subproject commit' | awk '{print $3}')" && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get current commit for submodule ($sub) between: $base$DIFF$sha"
exit 1
fi
if [ -n "$sub_commit_cur" ]; then if [ -n "$sub_commit_cur" ]; then
( (
cd "$sub" && ( cd "$sub" && (
@@ -35,18 +53,39 @@ function get_diff() {
done < <(git submodule | awk '{print $2}') done < <(git submodule | awk '{print $2}')
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
git diff --diff-filter="$filter" --name-only --ignore-submodules=all "$base" "$sha" | xargs -I {} dirname {} | uniq git diff --diff-filter="$filter" --name-only --ignore-submodules=all "$base$DIFF$sha" | xargs -I {} dirname {} | uniq && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get changed directories between: $base$DIFF$sha"
exit 1
fi
else else
git diff --diff-filter="$filter" --name-only --ignore-submodules=all "$base" "$sha" git diff --diff-filter="$filter" --name-only --ignore-submodules=all "$base$DIFF$sha" && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get changed files between: $base$DIFF$sha"
exit 1
fi
fi fi
} }
function get_renames() { function get_renames() {
base="$1" local base="$1"
sha="$2" local sha="$2"
while IFS='' read -r sub; do while IFS='' read -r sub; do
sub_commit_pre="$(git diff "$base" "$sha" -- "$sub" | grep '^[-]Subproject commit' | awk '{print $3}')" sub_commit_pre="$(git diff "$base$DIFF$sha" -- "$sub" | grep '^[-]Subproject commit' | awk '{print $3}')" && exit_status=$? || exit_status=$?
sub_commit_cur="$(git diff "$base" "$sha" -- "$sub" | grep '^[+]Subproject commit' | awk '{print $3}')" if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get previous commit for submodule ($sub) between: $base$DIFF$sha"
exit 1
fi
sub_commit_cur="$(git diff "$base$DIFF$sha" -- "$sub" | grep '^[+]Subproject commit' | awk '{print $3}')" && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get current commit for submodule ($sub) between: $base$DIFF$sha"
exit 1
fi
if [ -n "$sub_commit_cur" ]; then if [ -n "$sub_commit_cur" ]; then
( (
cd "$sub" && ( cd "$sub" && (
@@ -58,9 +97,19 @@ function get_renames() {
done < <(git submodule | awk '{print $2}') done < <(git submodule | awk '{print $2}')
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
git log --name-status --ignore-submodules=all "$base".."$sha" | grep -E "^R" | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' | xargs -I {} dirname {} | uniq git log --name-status --ignore-submodules=all "$base" "$sha" | grep -E "^R" | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' | xargs -I {} dirname {} | uniq && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get renamed directories between: $base$sha"
exit 1
fi
else else
git log --name-status --ignore-submodules=all "$base".."$sha" | grep -E "^R" | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' git log --name-status --ignore-submodules=all "$base" "$sha" | grep -E "^R" | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get renamed files between: $base$sha"
exit 1
fi
fi fi
} }
@@ -131,9 +180,17 @@ else
if [[ -n "${ALL_CHANGED}" ]]; then if [[ -n "${ALL_CHANGED}" ]]; then
echo "::debug::Matching changed files: ${ALL_CHANGED}" echo "::debug::Matching changed files: ${ALL_CHANGED}"
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=any_changed::true" echo "::set-output name=any_changed::true"
else else
echo "any_changed=true" >> "$GITHUB_OUTPUT"
fi
else
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=any_changed::false" echo "::set-output name=any_changed::false"
else
echo "any_changed=false" >> "$GITHUB_OUTPUT"
fi
fi fi
OTHER_CHANGED="" OTHER_CHANGED=""
@@ -154,19 +211,38 @@ else
if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then
echo "::debug::Non Matching changed files: ${OTHER_CHANGED}" echo "::debug::Non Matching changed files: ${OTHER_CHANGED}"
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=only_changed::false" echo "::set-output name=only_changed::false"
echo "::set-output name=other_changed_files::$OTHER_CHANGED" echo "::set-output name=other_changed_files::$OTHER_CHANGED"
else
echo "only_changed=false" >> "$GITHUB_OUTPUT"
echo "other_changed_files=$OTHER_CHANGED" >> "$GITHUB_OUTPUT"
fi
elif [[ -n "${ALL_CHANGED}" ]]; then elif [[ -n "${ALL_CHANGED}" ]]; then
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=only_changed::true" echo "::set-output name=only_changed::true"
else
echo "only_changed=true" >> "$GITHUB_OUTPUT"
fi
fi fi
ALL_OTHER_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}') ALL_OTHER_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
if [[ -n "${ALL_MODIFIED}" ]]; then if [[ -n "${ALL_MODIFIED}" ]]; then
echo "::debug::Matching modified files: ${ALL_MODIFIED}" echo "::debug::Matching modified files: ${ALL_MODIFIED}"
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=any_modified::true" echo "::set-output name=any_modified::true"
else else
echo "any_modified=true" >> "$GITHUB_OUTPUT"
fi
else
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=any_modified::false" echo "::set-output name=any_modified::false"
else
echo "any_modified=false" >> "$GITHUB_OUTPUT"
fi
fi fi
OTHER_MODIFIED="" OTHER_MODIFIED=""
@@ -187,19 +263,37 @@ else
if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then
echo "::debug::Non Matching modified files: ${OTHER_MODIFIED}" echo "::debug::Non Matching modified files: ${OTHER_MODIFIED}"
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=only_modified::false" echo "::set-output name=only_modified::false"
echo "::set-output name=other_modified_files::$OTHER_MODIFIED" echo "::set-output name=other_modified_files::$OTHER_MODIFIED"
else
echo "only_modified=false" >> "$GITHUB_OUTPUT"
echo "other_modified_files=$OTHER_MODIFIED" >> "$GITHUB_OUTPUT"
fi
elif [[ -n "${ALL_MODIFIED}" ]]; then elif [[ -n "${ALL_MODIFIED}" ]]; then
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=only_modified::true" echo "::set-output name=only_modified::true"
else
echo "only_modified=true" >> "$GITHUB_OUTPUT"
fi
fi fi
ALL_OTHER_DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}') ALL_OTHER_DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
if [[ -n "${DELETED}" ]]; then if [[ -n "${DELETED}" ]]; then
echo "::debug::Matching deleted files: ${DELETED}" echo "::debug::Matching deleted files: ${DELETED}"
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=any_deleted::true" echo "::set-output name=any_deleted::true"
else else
echo "any_deleted=true" >> "$GITHUB_OUTPUT"
fi
else
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=any_deleted::false" echo "::set-output name=any_deleted::false"
else
echo "any_deleted=false" >> "$GITHUB_OUTPUT"
fi
fi fi
OTHER_DELETED="" OTHER_DELETED=""
@@ -220,10 +314,19 @@ else
if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then
echo "::debug::Non Matching deleted files: ${OTHER_DELETED}" echo "::debug::Non Matching deleted files: ${OTHER_DELETED}"
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=only_deleted::false" echo "::set-output name=only_deleted::false"
echo "::set-output name=other_deleted_files::$OTHER_DELETED" echo "::set-output name=other_deleted_files::$OTHER_DELETED"
else
echo "only_deleted=false" >> "$GITHUB_OUTPUT"
echo "other_deleted_files=$OTHER_DELETED" >> "$GITHUB_OUTPUT"
fi
elif [[ -n "${DELETED}" ]]; then elif [[ -n "${DELETED}" ]]; then
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=only_deleted::true" echo "::set-output name=only_deleted::true"
else
echo "only_deleted=true" >> "$GITHUB_OUTPUT"
fi
fi fi
if [[ "$INPUT_JSON" == "false" ]]; then if [[ "$INPUT_JSON" == "false" ]]; then
ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}') ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
@@ -267,6 +370,7 @@ if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
echo "::debug::All old & new renamed files: $ALL_OLD_NEW_RENAMED" echo "::debug::All old & new renamed files: $ALL_OLD_NEW_RENAMED"
fi fi
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=added_files::$ADDED" echo "::set-output name=added_files::$ADDED"
echo "::set-output name=copied_files::$COPIED" echo "::set-output name=copied_files::$COPIED"
echo "::set-output name=deleted_files::$DELETED" echo "::set-output name=deleted_files::$DELETED"
@@ -278,8 +382,28 @@ echo "::set-output name=unknown_files::$UNKNOWN"
echo "::set-output name=all_changed_and_modified_files::$ALL_CHANGED_AND_MODIFIED" echo "::set-output name=all_changed_and_modified_files::$ALL_CHANGED_AND_MODIFIED"
echo "::set-output name=all_changed_files::$ALL_CHANGED" echo "::set-output name=all_changed_files::$ALL_CHANGED"
echo "::set-output name=all_modified_files::$ALL_MODIFIED" echo "::set-output name=all_modified_files::$ALL_MODIFIED"
else
cat <<EOF >> "$GITHUB_OUTPUT"
added_files=$ADDED
copied_files=$COPIED
deleted_files=$DELETED
modified_files=$MODIFIED
renamed_files=$RENAMED
type_changed_files=$TYPE_CHANGED
unmerged_files=$UNMERGED
unknown_files=$UNKNOWN
all_changed_and_modified_files=$ALL_CHANGED_AND_MODIFIED
all_changed_files=$ALL_CHANGED
all_modified_files=$ALL_MODIFIED
EOF
fi
if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
if [[ -z "$GITHUB_OUTPUT" ]]; then
echo "::set-output name=all_old_new_renamed_files::$ALL_OLD_NEW_RENAMED" echo "::set-output name=all_old_new_renamed_files::$ALL_OLD_NEW_RENAMED"
else
echo "all_old_new_renamed_files=$ALL_OLD_NEW_RENAMED" >> "$GITHUB_OUTPUT"
fi
fi fi
echo "::endgroup::" echo "::endgroup::"

View File

@@ -1,24 +0,0 @@
#!/usr/bin/env bash
set -eu
if [[ -n $INPUT_PATH ]]; then
REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH"
echo "Resolving repository path: $REPO_DIR"
if [[ ! -d "$REPO_DIR" ]]; then
echo "::error::Invalid repository path: $REPO_DIR"
exit 1
fi
cd "$REPO_DIR"
fi
if [[ -n "$INPUT_UNTIL" ]]; then
SHA=$(git log -1 --format="%H" --date=local --until="$INPUT_UNTIL")
if [[ -z "$SHA" ]]; then
echo "::warning::The SHA for date '$INPUT_UNTIL' couldn't be determined, falling back to the current sha."
fi
echo "::set-output name=sha::$SHA"
else
echo "::set-output name=sha::$INPUT_SHA"
fi