mirror of
https://github.com/tj-actions/changed-files
synced 2024-12-17 13:47:20 +00:00
Merge pull request #798 from tj-actions/feat/update-retrieving-merge-base
feat: skip merge-base check for non shallow clones and fallback to using --fork-point
This commit is contained in:
commit
e6bd87aabe
2 changed files with 24 additions and 17 deletions
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
|
@ -299,7 +299,7 @@ jobs:
|
|||
uses: ./
|
||||
continue-on-error: true
|
||||
with:
|
||||
base_sha: "4554456"
|
||||
sha: "4554456"
|
||||
|
||||
- name: Show output
|
||||
run: |
|
||||
|
@ -319,7 +319,7 @@ jobs:
|
|||
continue-on-error: true
|
||||
with:
|
||||
files: action.yml
|
||||
base_sha: "4554456"
|
||||
sha: "4554456"
|
||||
|
||||
- name: Show output
|
||||
run: |
|
||||
|
|
37
diff-sha.sh
37
diff-sha.sh
|
@ -150,22 +150,8 @@ else
|
|||
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" == "false" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS --depth="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH"
|
||||
git fetch -u --progress $EXTRA_ARGS --depth="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH"
|
||||
git branch --track "$TARGET_BRANCH" origin/"$TARGET_BRANCH" 2>/dev/null || true
|
||||
|
||||
depth=$INPUT_FETCH_DEPTH
|
||||
|
||||
while [ -z "$( git merge-base "$TARGET_BRANCH" HEAD )" ]; do
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS --deepen="$depth" origin "$TARGET_BRANCH" HEAD;
|
||||
depth=$((depth * 10))
|
||||
max_depth=$INPUT_MAX_FETCH_DEPTH
|
||||
|
||||
if [[ $depth -gt $max_depth ]]; then
|
||||
echo "::error::Unable to find merge-base between $TARGET_BRANCH and HEAD."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "::debug::Getting HEAD SHA..."
|
||||
|
@ -196,6 +182,27 @@ else
|
|||
echo "::debug::Current SHA: $CURRENT_SHA"
|
||||
fi
|
||||
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" == "false" ]]; then
|
||||
if [[ -f .git/shallow ]]; then
|
||||
depth=$INPUT_FETCH_DEPTH
|
||||
max_depth=$INPUT_MAX_FETCH_DEPTH
|
||||
|
||||
while [ -z "$( git merge-base --fork-point "$TARGET_BRANCH" HEAD )" ] || [ -z "$(git merge-base "$TARGET_BRANCH" HEAD)" ]; do
|
||||
depth=$((depth + 300))
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS --deepen="$depth" origin "$TARGET_BRANCH" HEAD;
|
||||
|
||||
if [[ $depth -gt $max_depth ]]; then
|
||||
echo "::error::Unable to locate a common ancestor between $TARGET_BRANCH and HEAD"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "::debug::Not a shallow clone, skipping merge-base check."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z $INPUT_BASE_SHA ]]; then
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" == "true" ]]; then
|
||||
PREVIOUS_SHA=$GITHUB_EVENT_BEFORE
|
||||
|
|
Loading…
Reference in a new issue