Compare commits

..

36 Commits

Author SHA1 Message Date
Tonye Jack
74338865c1 Merge branch 'chore/update-submodule' 2023-02-15 21:48:41 -07:00
Tonye Jack
b477871310 fix: bug getting diff for submodules and fetching more history (#980)
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2023-02-16 04:42:55 +00:00
Tonye Jack
598d24527e Remove debugging 2023-02-15 20:45:00 -07:00
Tonye Jack
6498ab1ae4 Fixed the test 2023-02-15 20:43:10 -07:00
Tonye Jack
8aea4cfc19 Fixed the test 2023-02-15 20:39:45 -07:00
Tonye Jack
55362b9d1b Fixed the test 2023-02-15 20:36:23 -07:00
Tonye Jack
e47c489b15 Fixed the test 2023-02-15 20:08:38 -07:00
Tonye Jack
5e3c67ab60 Fixed the test 2023-02-15 20:06:17 -07:00
Tonye Jack
3253948ff2 Updated the fetch args 2023-02-15 20:03:18 -07:00
Tonye Jack
0e4863b3a2 Fixed the test 2023-02-15 19:59:16 -07:00
Tonye Jack
10999da6dc Fixed the test 2023-02-15 19:46:42 -07:00
Tonye Jack
07dba6b85d Fixed the test 2023-02-15 19:43:05 -07:00
Tonye Jack
ab710fb168 Fixed the test 2023-02-15 19:35:16 -07:00
repo-ranger[bot]
cec01b8d1d Merge branch 'main' into chore/update-submodule 2023-02-16 01:33:21 +00:00
Tonye Jack
8efe373530 Update README.md 2023-02-15 18:32:02 -07:00
Tonye Jack
123da80395 Updated the test 2023-02-15 18:08:56 -07:00
Tonye Jack
ab5069cbb1 Remove debugging 2023-02-15 18:04:27 -07:00
repo-ranger[bot]
eebd3f0a07 Merge branch 'main' into chore/update-submodule 2023-02-16 00:56:29 +00:00
Tonye Jack
a2ffc56365 Updated README.md (#984)
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
2023-02-15 17:55:26 -07:00
repo-ranger[bot]
58afb05fef Merge branch 'main' into chore/update-submodule 2023-02-16 00:55:18 +00:00
Tonye Jack
fe5db36271 Update README.md 2023-02-15 17:54:23 -07:00
Tonye Jack
5982c92676 Update to include submodules. 2023-02-15 17:22:35 -07:00
Tonye Jack
4d6ed243ff Update error message 2023-02-15 17:09:42 -07:00
Tonye Jack
adb9fa830d Update error message 2023-02-15 17:07:19 -07:00
Tonye Jack
73246a42b0 Update error message 2023-02-15 17:04:39 -07:00
Tonye Jack
65a49b917f Update error message 2023-02-15 16:54:30 -07:00
Tonye Jack
5e8b123b3d Updated get_diff 2023-02-15 15:50:34 -07:00
Tonye Jack
6164e1cd7f Update get-changed-paths.sh 2023-02-14 04:45:30 -07:00
Tonye Jack
4dc0f1f904 Update get-changed-paths.sh 2023-02-14 04:41:11 -07:00
Tonye Jack
b4d152a6a5 Merge branch 'main' into chore/update-submodule 2023-02-14 04:14:14 -07:00
Tonye Jack
f0fc230482 Update get-changed-paths.sh 2023-02-14 04:14:01 -07:00
Tonye Jack
cb2d527650 Upgraded to v35.5.3 (#982)
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
2023-02-14 11:09:49 +00:00
Tonye Jack
68f10de3ea Enable debugging. 2023-02-13 21:28:45 -07:00
Tonye Jack
608b7f81de Enable debugging. 2023-02-13 21:23:31 -07:00
Tonye Jack
a4b2b85206 Updated the test 2023-02-13 21:21:43 -07:00
Tonye Jack
adde7bbfea chore: update submodule 2023-02-13 21:01:50 -07:00
6 changed files with 109 additions and 51 deletions

View File

@@ -334,6 +334,41 @@ jobs:
echo "Expected: (failure) got ${{ steps.changed-files-specific.outcome }}"
exit 1
test-submodules:
name: Test changed-files with submodule
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
max-parallel: 4
matrix:
platform: [ubuntu-latest]
steps:
- name: Checkout to branch
uses: actions/checkout@v3
with:
submodules: recursive
- name: Run changed-files with submodule
id: changed-files
uses: ./
with:
base_sha: "85bd869"
sha: "adde7bb"
fetch_depth: 60000
- name: Verify added files
if: steps.changed-files.outputs.added_files != 'test/demo/test/test.txt'
run: |
echo "Expected: (test/demo/test/test.txt) got ${{ steps.changed-files.outputs.added_files }}"
exit 1
- name: Show output
run: |
echo "${{ toJSON(steps.changed-files.outputs) }}"
shell:
bash
test:
name: Test changed-files
runs-on: ${{ matrix.platform }}

View File

@@ -1,12 +1,33 @@
# Changelog
## [Unreleased](https://github.com/tj-actions/changed-files/tree/HEAD)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.5.3...HEAD)
**Fixed bugs:**
- \[BUG\] action fail with pull request from external branch called master [\#979](https://github.com/tj-actions/changed-files/issues/979)
## [v35.5.3](https://github.com/tj-actions/changed-files/tree/v35.5.3) (2023-02-14)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35...v35.5.3)
## [v35](https://github.com/tj-actions/changed-files/tree/v35) (2023-02-14)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.5.2...v35)
**Fixed bugs:**
- Action fails on empty repo or when the specific file pattern is not found [\#976](https://github.com/tj-actions/changed-files/issues/976)
**Merged pull requests:**
- fix: bug with pr from forks with similar branch names [\#981](https://github.com/tj-actions/changed-files/pull/981) ([jackton1](https://github.com/jackton1))
- Upgraded to v35.5.2 [\#977](https://github.com/tj-actions/changed-files/pull/977) ([jackton1](https://github.com/jackton1))
## [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...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)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v35.5.1...v35.5.2)
**Fixed bugs:**
@@ -515,7 +536,7 @@
## [v34.3.3](https://github.com/tj-actions/changed-files/tree/v34.3.3) (2022-11-08)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v34.3.2...v34.3.3)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v34.3.1...v34.3.3)
**Fixed bugs:**
@@ -530,13 +551,13 @@
- chore: update readme [\#784](https://github.com/tj-actions/changed-files/pull/784) ([jackton1](https://github.com/jackton1))
- Upgraded to v34.3.2 [\#781](https://github.com/tj-actions/changed-files/pull/781) ([jackton1](https://github.com/jackton1))
## [v34.3.2](https://github.com/tj-actions/changed-files/tree/v34.3.2) (2022-11-07)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v34.3.1...v34.3.2)
## [v34.3.1](https://github.com/tj-actions/changed-files/tree/v34.3.1) (2022-11-07)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v34.3.0...v34.3.1)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v34.3.2...v34.3.1)
## [v34.3.2](https://github.com/tj-actions/changed-files/tree/v34.3.2) (2022-11-07)
[Full Changelog](https://github.com/tj-actions/changed-files/compare/v34.3.0...v34.3.2)
**Fixed bugs:**
@@ -1769,7 +1790,7 @@
## [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:**
@@ -1788,13 +1809,13 @@
- \[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)
## [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)
[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:**

View File

@@ -1,11 +1,11 @@
[![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge\&logo=ubuntu\&logoColor=white)](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[![Mac OS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge\&logo=macos\&logoColor=F0F0F0)](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\&logo=windows\&logoColor=white)](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[![Public workflows that use this action.](https://img.shields.io/endpoint?style=for-the-badge\&url=https%3A%2F%2Fused-by.vercel.app%2Fapi%2Fgithub-actions%2Fused-by%3Faction%3Dtj-actions%2Fchanged-files%26badge%3Dtrue)](https://github.com/search?o=desc\&q=tj-actions+changed-files+language%3AYAML\&s=\&type=Code)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/4a625e9b62794b5b98e169c15c0e673c)](https://www.codacy.com/gh/tj-actions/changed-files/dashboard?utm_source=github.com\&utm_medium=referral\&utm_content=tj-actions/changed-files\&utm_campaign=Badge_Grade)
[![CI](https://github.com/tj-actions/changed-files/actions/workflows/test.yml/badge.svg)](https://github.com/tj-actions/changed-files/actions/workflows/test.yml)
[![Update release version.](https://github.com/tj-actions/changed-files/actions/workflows/sync-release-version.yml/badge.svg)](https://github.com/tj-actions/changed-files/actions/workflows/sync-release-version.yml)
[![Public workflows that use this action.](https://img.shields.io/endpoint?url=https%3A%2F%2Fused-by.vercel.app%2Fapi%2Fgithub-actions%2Fused-by%3Faction%3Dtj-actions%2Fchanged-files%26badge%3Dtrue)](https://github.com/search?o=desc\&q=tj-actions+changed-files+language%3AYAML\&s=\&type=Code)
[![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?logo=ubuntu\&logoColor=white)](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[![Mac OS](https://img.shields.io/badge/mac%20os-000000?logo=macos\&logoColor=F0F0F0)](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[![Windows](https://img.shields.io/badge/Windows-0078D6?logo=windows\&logoColor=white)](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
@@ -23,7 +23,7 @@ Retrieve all changed files and directories relative to the target branch or the
* Easy to debug.
* Scales to large repositories.
* Supports Git submodules.
* Escaped JSON Output which can be used for running matrix jobs based on changed files.
* Escaped JSON output which can be used for running matrix jobs based on changed files.
* List changed directories.
* Restrict the max depth of changed directories.
* Write outputs to files at a specified location for further processing.

View File

@@ -4,7 +4,7 @@ set -euo pipefail
INITIAL_COMMIT="false"
GITHUB_OUTPUT=${GITHUB_OUTPUT:-""}
EXTRA_ARGS="--no-tags --prune --no-recurse-submodules"
EXTRA_ARGS="--no-tags --prune --recurse-submodules"
PREVIOUS_SHA=""
CURRENT_SHA=""
DIFF="..."
@@ -60,7 +60,9 @@ if [[ -z $GITHUB_EVENT_PULL_REQUEST_BASE_REF ]]; then
if [[ -f .git/shallow ]]; then
echo "Fetching remote refs..."
# shellcheck disable=SC2086
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin "$CURRENT_BRANCH" 1>/dev/null || true
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$CURRENT_BRANCH":refs/remotes/origin/"$CURRENT_BRANCH" 1>/dev/null
# shellcheck disable=SC2086
git submodule foreach git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" || true
fi
echo "::debug::Getting HEAD SHA..."
@@ -218,7 +220,7 @@ else
# 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
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH" 1>/dev/null
if git merge-base "$PREVIOUS_SHA" "$CURRENT_SHA" 1>/dev/null 2>&1; then
break
fi

View File

@@ -56,13 +56,13 @@ function get_dirname_max_depth() {
}
function json_output() {
JQ_ARGS="-sR"
local jq_args="-sR"
if [[ "$INPUT_JSON_RAW_FORMAT" == "true" ]]; then
JQ_ARGS="$JQ_ARGS -r"
jq_args="$jq_args -r"
fi
# shellcheck disable=SC2086
jq $JQ_ARGS 'split("\n") | map(select(. != "")) | @json' | sed -r 's/^"|"$//g' | tr -s /
jq $jq_args 'split("\n") | map(select(. != "")) | @json' | sed -r 's/^"|"$//g' | tr -s /
}
function get_diff() {
@@ -71,33 +71,33 @@ function get_diff() {
local filter="$3"
while IFS='' read -r sub; do
sub_commit_pre="$(git diff "$base$DIFF$sha" -- "$sub" | { grep '^[-]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
sub_commit_pre="$(git diff "$base" "$sha" -- "$sub" | { grep '^[-]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get previous commit for submodule ($sub) between: $base$DIFF$sha"
exit 1
echo "::warning::Failed to get previous commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
fi
sub_commit_cur="$(git diff "$base$DIFF$sha" -- "$sub" | { grep '^[+]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
sub_commit_cur="$(git diff "$base" "$sha" -- "$sub" | { grep '^[+]Subproject commit' || true; } | 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
echo "::warning::Failed to get current commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
fi
if [ -n "$sub_commit_cur" ]; then
(
cd "$sub" && (
# the strange magic number is a hardcoded "empty tree" commit sha
get_diff "${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904}" "${sub_commit_cur}" "$filter" | awk -v r="$sub" '{ print "" r "/" $0}'
git diff --diff-filter="$filter" --name-only --ignore-submodules=all "${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904}" "${sub_commit_cur}" | awk -v r="$sub" '{ print "" r "/" $0}' 2>/dev/null
)
)
) || {
echo "::warning::Failed to get changed files for submodule ($sub) between: ${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904} ${sub_commit_cur}. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
}
fi
done < <(git submodule | awk '{print $2}')
git diff --diff-filter="$filter" --name-only --ignore-submodules=all --no-merges "$base$DIFF$sha" && exit_status=$? || exit_status=$?
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
echo "::error::Failed to get changed files between: $base$DIFF$sha" >&2
return 1
fi
}
@@ -106,33 +106,33 @@ function get_renames() {
local sha="$2"
while IFS='' read -r sub; do
sub_commit_pre="$(git diff "$base$DIFF$sha" -- "$sub" | { grep '^[-]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
sub_commit_pre="$(git diff "$base" "$sha" -- "$sub" | { grep '^[-]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
if [[ $exit_status -ne 0 ]]; then
echo "::error::Failed to get previous commit for submodule ($sub) between: $base$DIFF$sha"
exit 1
echo "::warning::Failed to get previous commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
fi
sub_commit_cur="$(git diff "$base$DIFF$sha" -- "$sub" | { grep '^[+]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
sub_commit_cur="$(git diff "$base" "$sha" -- "$sub" | { grep '^[+]Subproject commit' || true; } | 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
echo "::warning::Failed to get current commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
fi
if [ -n "$sub_commit_cur" ]; then
(
cd "$sub" && (
# the strange magic number is a hardcoded "empty tree" commit sha
get_renames "${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904}" "${sub_commit_cur}" | awk -v r="$sub" '{ print "" r "/" $0}'
git log --name-status --ignore-submodules=all "${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904}" "${sub_commit_cur}" | { grep -E "^R" || true; } | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' | awk -v r="$sub" '{ print "" r "/" $0}'
)
)
) || {
echo "::warning::Failed to get renamed files for submodule ($sub) between: ${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904} ${sub_commit_cur}. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
}
fi
done < <(git submodule | awk '{print $2}')
git log --name-status --ignore-submodules=all "$base" "$sha" | { grep -E "^R" || true; } | 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
echo "::error::Failed to get renamed files between: $base$sha" >&2
return 1
fi
}