Compare commits

...

22 Commits

Author SHA1 Message Date
Tonye Jack
d5414fd30b fix: bug with pr from forks with similar branch names (#981) 2023-02-13 21:26:59 -07:00
Tonye Jack
85bd8694a9 Update README.md 2023-02-09 12:47:53 -07:00
Tonye Jack
4dce8843f8 Upgraded to v35.5.2 (#977)
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
2023-02-09 16:55:28 +00:00
Tonye Jack
7f2aa19bdc chore: update use of tilde to use caret instead (#975) 2023-02-09 14:33:33 +00:00
Tonye Jack
4ffc815953 Upgraded to v35.5.1 (#974)
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
2023-02-07 03:44:03 +00:00
Tonye Jack
210cc839c2 fix: including non branch changes in diff output (#973)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2023-02-07 01:25:06 +00:00
Tonye Jack
2c684aedfa Update README.md 2023-02-06 18:09:57 -07:00
Tonye Jack
2703edcc41 chore: update readme (#971) 2023-02-04 21:44:21 +00:00
Tonye Jack
1a3ea1d324 Upgraded to v35.5.0 (#969)
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
2023-02-01 04:01:02 +00:00
Tonye Jack
db3ea27a0c Updated README.md (#968)
Co-authored-by: repo-ranger[bot] <repo-ranger[bot]@users.noreply.github.com>
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2023-01-31 18:53:59 -07:00
Tonye Jack
fc6ac10d4c Merge branch 'feat/add-support-for-excluding-the-top-level-directory' 2023-01-31 18:42:28 -07:00
Tonye Jack
08f351ba16 feat: add support for excluding the top level directory (#967) 2023-02-01 00:38:55 +00:00
Tonye Jack
aae4005247 Update action.yml 2023-01-31 17:23:32 -07:00
Tonye Jack
eb97e78971 Update test.yml 2023-01-31 17:19:40 -07:00
Tonye Jack
35d9bb6ce9 Updated the test 2023-01-31 17:09:22 -07:00
Tonye Jack
ce8c198347 Updated the test. 2023-01-31 17:06:50 -07:00
Tonye Jack
1982157b6c feat: add support for excluding the top level directory 2023-01-31 16:54:49 -07:00
Tonye Jack
dddfbd694c Update README.md 2023-01-26 11:49:02 -07:00
Tonye Jack
41ed98fdd5 chore: update docs (#964) 2023-01-25 08:14:32 -07:00
renovate[bot]
966bc5f420 chore(deps): update reviewdog/action-shellcheck action to v1.17 (#961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-01-21 23:54:28 +00:00
Tonye Jack
ddcadfd11d Upgraded to v35.4.4 (#960)
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
2023-01-19 23:28:17 +00:00
Tonye Jack
299748b520 chore: code clean up (#959) 2023-01-19 22:49:37 +00:00
6 changed files with 165 additions and 35 deletions

View File

@@ -24,7 +24,7 @@ jobs:
- name: Checkout to branch
uses: actions/checkout@v3
- name: shellcheck
uses: reviewdog/action-shellcheck@v1.16
uses: reviewdog/action-shellcheck@v1.17
test-multiple-repositories:
name: Test with multiple repositories
@@ -210,6 +210,7 @@ jobs:
matrix:
platform: [ubuntu-latest]
fetch-depth: [1, 2]
input-fetch_depth: [1, 50]
steps:
- name: Checkout to branch
@@ -220,6 +221,8 @@ jobs:
- name: Run changed-files
id: changed-files
uses: ./
with:
fetch_depth: ${{ matrix.input-fetch_depth }}
- name: Show output
run: |
@@ -446,6 +449,28 @@ jobs:
exit 1
shell:
bash
- name: Run changed-files with dir_names and dir_names_exclude_root
id: changed-files-dir-names-exclude-root
uses: ./
with:
base_sha: dddfbd69
sha: ce8c1983
fetch_depth: 60000
dir_names: "true"
dir_names_exclude_root: "true"
dir_names_max_depth: "1"
- name: Show output
run: |
echo '${{ toJSON(steps.changed-files-dir-names-exclude-root.outputs) }}'
shell:
bash
- name: Check dir_names output
if: steps.changed-files-dir-names-exclude-root.outputs.all_changed_files != '.github'
run: |
echo "Invalid output: Expected (.github) got (${{ steps.changed-files-dir-names-exclude-root.outputs.all_changed_files }})"
exit 1
shell:
bash
- name: Run changed-files with dir_names
id: changed-files-dir-names
uses: ./

View File

@@ -1,8 +1,82 @@
# Changelog
## [v35](https://github.com/tj-actions/changed-files/tree/v35) (2023-01-19)
## [v35.5.2](https://github.com/tj-actions/changed-files/tree/v35.5.2) (2023-02-09)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.4.3...v35)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35...v35.5.2)
## [v35](https://github.com/tj-actions/changed-files/tree/v35) (2023-02-09)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.5.1...v35)
**Fixed bugs:**
- \[BUG\] Unsynced target branch changes listed by action in pull requests [\#972](https://github.com/tj-actions/changed-files/issues/972)
**Merged pull requests:**
- chore: update use of tilde to use caret instead [\#975](https://github.com/tj-actions/changed-files/pull/975) ([jackton1](https://github.com/jackton1))
- Upgraded to v35.5.1 [\#974](https://github.com/tj-actions/changed-files/pull/974) ([jackton1](https://github.com/jackton1))
## [v35.5.1](https://github.com/tj-actions/changed-files/tree/v35.5.1) (2023-02-07)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.5.0...v35.5.1)
**Fixed bugs:**
- \[BUG\] Action started failing [\#970](https://github.com/tj-actions/changed-files/issues/970)
**Merged pull requests:**
- fix: including non branch changes in diff output [\#973](https://github.com/tj-actions/changed-files/pull/973) ([jackton1](https://github.com/jackton1))
- chore: update readme [\#971](https://github.com/tj-actions/changed-files/pull/971) ([jackton1](https://github.com/jackton1))
- Upgraded to v35.5.0 [\#969](https://github.com/tj-actions/changed-files/pull/969) ([jackton1](https://github.com/jackton1))
## [v35.5.0](https://github.com/tj-actions/changed-files/tree/v35.5.0) (2023-02-01)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.4.4...v35.5.0)
**Implemented enhancements:**
- \[Feature\] Exclude the top-level/root directory when dir\_names="true" [\#965](https://github.com/tj-actions/changed-files/issues/965)
- \[Feature\] Exclude Files [\#963](https://github.com/tj-actions/changed-files/issues/963)
- \[Feature\] Rename `files` -\> `paths` \[\#tara-label-enhancement\] \[\#tara-label-good first issue\] [\#125](https://github.com/tj-actions/changed-files/issues/125)
**Fixed bugs:**
- \[BUG\] PR between branch and main - unsynced changes appearing in changed files. [\#966](https://github.com/tj-actions/changed-files/issues/966)
- ::error::Failed to get current commit for submodule [\#962](https://github.com/tj-actions/changed-files/issues/962)
**Closed issues:**
- Dependency Dashboard [\#27](https://github.com/tj-actions/changed-files/issues/27)
**Merged pull requests:**
- Updated README.md [\#968](https://github.com/tj-actions/changed-files/pull/968) ([jackton1](https://github.com/jackton1))
- feat: add support for excluding the top level directory [\#967](https://github.com/tj-actions/changed-files/pull/967) ([jackton1](https://github.com/jackton1))
- chore: update docs [\#964](https://github.com/tj-actions/changed-files/pull/964) ([jackton1](https://github.com/jackton1))
- chore\(deps\): update reviewdog/action-shellcheck action to v1.17 [\#961](https://github.com/tj-actions/changed-files/pull/961) ([renovate[bot]](https://github.com/apps/renovate))
- Upgraded to v35.4.4 [\#960](https://github.com/tj-actions/changed-files/pull/960) ([jackton1](https://github.com/jackton1))
- chore: code clean up [\#959](https://github.com/tj-actions/changed-files/pull/959) ([jackton1](https://github.com/jackton1))
## [v35.4.4](https://github.com/tj-actions/changed-files/tree/v35.4.4) (2023-01-19)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.4.3...v35.4.4)
**Fixed bugs:**
- \[BUG\] Action is evaluating branch instead of sha [\#957](https://github.com/tj-actions/changed-files/issues/957)
- \[BUG\] Unable to run on windows self-hosted runner [\#956](https://github.com/tj-actions/changed-files/issues/956)
**Closed issues:**
- Comparing differences between tags/releases [\#949](https://github.com/tj-actions/changed-files/issues/949)
**Merged pull requests:**
- fix: revert change to pull pr branch via the branch name [\#958](https://github.com/tj-actions/changed-files/pull/958) ([jackton1](https://github.com/jackton1))
- feat: add guide for retrieving changed files for tags [\#955](https://github.com/tj-actions/changed-files/pull/955) ([jackton1](https://github.com/jackton1))
- Upgraded to v35.4.3 [\#954](https://github.com/tj-actions/changed-files/pull/954) ([jackton1](https://github.com/jackton1))
## [v35.4.3](https://github.com/tj-actions/changed-files/tree/v35.4.3) (2023-01-19)
@@ -73,10 +147,6 @@
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.3.1...v35.3.2)
**Closed issues:**
- Dependency Dashboard [\#27](https://github.com/tj-actions/changed-files/issues/27)
**Merged pull requests:**
- fix\(regression\): invalid json output. [\#930](https://github.com/tj-actions/changed-files/pull/930) ([jackton1](https://github.com/jackton1))
@@ -748,7 +818,7 @@
- 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))
- TYPO fix [\#671](https://github.com/tj-actions/changed-files/pull/671) ([kostiantyn-korniienko](https://github.com/kostiantyn-korniienko))
- 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))
@@ -799,7 +869,7 @@
## [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.0.0...v31.0.0)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v30...v31.0.0)
**Merged pull requests:**
@@ -812,13 +882,13 @@
- 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))
## [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/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)
[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)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v29.0.9...v30.0.0)
**Fixed bugs:**
@@ -1765,7 +1835,7 @@
## [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:**
@@ -1783,13 +1853,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))
- 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)
[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:**

View File

@@ -22,11 +22,11 @@ Retrieve all changed files and directories relative to the target branch or the
* Fast execution (0-10 seconds on average).
* Easy to debug.
* Scales to large repositories.
* Git submodules support.
* Supports Git submodules.
* Escaped JSON Output which can be used for running matrix jobs based on changed files.
* Optionally list only changed directories.
* List changed directories.
* Restrict the max depth of changed directories.
* Optionally save outputs to files at a specified location for further processing.
* Write outputs to files at a specified location for further processing.
* Monorepos (Fetches only the last remote commit).
* Supports all platforms (Linux, MacOS, Windows).
* [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners) support
@@ -39,7 +39,7 @@ Retrieve all changed files and directories relative to the target branch or the
* Restrict change detection to a subset of files and directories:
* Boolean output indicating that certain files have been changed.
* Using [Glob pattern](https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet) matching.
* Brace expansion
* Brace expansion.
## Usage
@@ -98,6 +98,21 @@ jobs:
run: |
echo "One or more files in the docs folder has changed."
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
# Example 3
- name: Get changed js files excluding the docs folder
id: changed-files-excluded
uses: tj-actions/changed-files@v35
with:
files: |
**/*.js
files_ignore: docs/** # Alternatively using: `docs`
- name: Run step if any other js file(s) change
if: steps.changed-files-excluded.outputs.any_changed == 'true'
run: |
echo "One or more js files not in the doc folder has changed."
echo "List all the files that have changed: ${{ steps.changed-files-excluded.outputs.all_changed_files }}"
```
If you feel generous and want to show some extra appreciation:
@@ -162,6 +177,7 @@ Support this project with a :star:
| base\_sha | string | false | | Specify a different base commit SHA<br>used for comparing changes |
| diff\_relative | string | false | | Exclude changes outside the current directory<br> and show path names relative to<br> it. **NOTE:** This requires you to<br> specify the top level directory via<br>the `path` input. |
| dir\_names | string | false | `"false"` | Output unique changed directories instead of<br> filenames. **NOTE:** This returns `.` for<br> changed files located in the root<br>of the project. |
| dir\_names\_exclude\_root | string | false | `"false"` | Exclude the root directory represented by<br> `.` from the output when `dir_names`is<br>set to `true`. |
| dir\_names\_max\_depth | string | false | | Maximum depth of directories to output.<br> e.g `test/test1/test2` with max depth of<br>`2` returns `test/test1`. |
| fetch\_depth | string | false | `"50"` | Depth of additional branch history fetched.<br> **NOTE**: This can be adjusted to<br>resolve errors with insufficient history. |
| files | string | false | | File and directory patterns to detect<br> changes using only these list of<br> file(s) (Defaults to the entire repo)<br> **NOTE:** Multiline file/directory patterns should not<br>include quotes. |

View File

@@ -75,6 +75,10 @@ inputs:
dir_names_max_depth:
description: "Maximum depth of directories to output. e.g `test/test1/test2` with max depth of `2` returns `test/test1`."
required: false
dir_names_exclude_root:
description: "Exclude the root directory represented by `.` from the output when `dir_names`is set to `true`."
required: false
default: "false"
json:
description: "Output list of changed files in a JSON formatted string which can be used for matrix jobs."
required: false
@@ -245,6 +249,7 @@ runs:
INPUT_DIFF_RELATIVE: ${{ inputs.diff_relative }}
INPUT_DIR_NAMES: ${{ inputs.dir_names }}
INPUT_DIR_NAMES_MAX_DEPTH: ${{ inputs.dir_names_max_depth }}
INPUT_DIR_NAMES_EXCLUDE_ROOT: ${{ inputs.dir_names_exclude_root }}
INPUT_JSON: ${{ inputs.json }}
INPUT_HAS_CUSTOM_PATTERNS: ${{ steps.glob.outputs.has-custom-patterns }}
INPUT_JSON_RAW_FORMAT: ${{ inputs.json_raw_format }}

View File

@@ -12,9 +12,6 @@ IS_TAG="false"
if [[ "$GITHUB_REF" == "refs/tags/"* ]]; then
IS_TAG="true"
fi
if [[ "$GITHUB_REF" == "refs/tags/"* ]]; then
EXTRA_ARGS="--prune --no-recurse-submodules"
fi
@@ -110,14 +107,14 @@ if [[ -z $GITHUB_EVENT_PULL_REQUEST_BASE_REF ]]; then
if [[ "$GITHUB_EVENT_FORCED" == "false" || -z "$GITHUB_EVENT_FORCED" ]]; then
PREVIOUS_SHA=$GITHUB_EVENT_BEFORE && exit_status=$? || exit_status=$?
else
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD~1") && exit_status=$? || exit_status=$?
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD^") && exit_status=$? || exit_status=$?
fi
else
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD~1") && exit_status=$? || exit_status=$?
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD^") && exit_status=$? || exit_status=$?
fi
if [[ -z "$PREVIOUS_SHA" || "$PREVIOUS_SHA" == "0000000000000000000000000000000000000000" ]]; then
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD~1") && exit_status=$? || exit_status=$?
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD^") && exit_status=$? || exit_status=$?
fi
if [[ "$PREVIOUS_SHA" == "$CURRENT_SHA" ]]; then
@@ -171,8 +168,8 @@ else
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" != "true" ]]; then
echo "::debug::Fetching remote target branch..."
# shellcheck disable=SC2086
git fetch -u --progress $EXTRA_ARGS --depth="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH" 1>/dev/null
git branch --track "$TARGET_BRANCH" origin/"$TARGET_BRANCH" 1>/dev/null 2>&1 || true
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH" 1>/dev/null
git branch --track "$TARGET_BRANCH" origin/"$TARGET_BRANCH" 1>/dev/null || true
fi
fi
@@ -212,10 +209,23 @@ else
PREVIOUS_SHA=$GITHUB_EVENT_PULL_REQUEST_BASE_SHA
fi
else
PREVIOUS_SHA=$(git merge-base "$TARGET_BRANCH" "$CURRENT_SHA") && exit_status=$? || exit_status=$?
PREVIOUS_SHA=$(git rev-parse origin/"$TARGET_BRANCH") && exit_status=$? || exit_status=$?
if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then
PREVIOUS_SHA=$(git rev-parse origin/"$TARGET_BRANCH") && exit_status=$? || exit_status=$?
if [[ -f .git/shallow ]]; then
# check if the merge base is in the local history
if ! git merge-base "$PREVIOUS_SHA" "$CURRENT_SHA" 1>/dev/null 2>&1; then
echo "::debug::Merge base is not in the local history, fetching remote target branch..."
# Fetch more of the target branch history until the merge base is found
for i in {1..10}; do
# shellcheck disable=SC2086
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin "$TARGET_BRANCH:$TARGET_BRANCH" 1>/dev/null
if git merge-base "$PREVIOUS_SHA" "$CURRENT_SHA" 1>/dev/null 2>&1; then
break
fi
echo "::debug::Merge base is not in the local history, fetching remote target branch again..."
echo "::debug::Attempt $i/10"
done
fi
fi
fi

View File

@@ -47,6 +47,10 @@ function get_dirname_max_depth() {
depth=$((depth + 1))
done
if [[ "$INPUT_DIR_NAMES_EXCLUDE_ROOT" == "true" && "$output" == "." ]]; then
continue
fi
echo "$output"
done < <(uniq)
}