Skip to content

Commit

Permalink
Merge pull request #722 from tj-actions/fix/bug-with-finding-merge-base
Browse files Browse the repository at this point in the history
  • Loading branch information
jackton1 committed Oct 30, 2022
2 parents ada5b18 + a8c8155 commit 28a044a
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions diff-sha.sh
Expand Up @@ -68,18 +68,20 @@ else
fi

function deepenShallowCloneToFindCommit() {
local ref="$1"
local target_branch="$2"
local base_ref="$1"
local diff="$2"
local ref="$3"
local target_branch="$4"
local depth=20
local max_depth=$INPUT_MAX_FETCH_DEPTH

while ! git rev-parse --quiet --verify "$ref^{commit}" &>/dev/null; do
echo "::debug::Unable to find commit '$ref' in shallow clone. Increasing depth to $((depth * 2))..."
while ! git diff "$base_ref$diff$ref" &>/dev/null; do
echo "::debug::Unable to find merge-base 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."
echo "::error::Unable to find merge-base in shallow clone. Please increase 'max_fetch_depth' to at least $((depth + 20))."
exit 1
fi

Expand Down Expand Up @@ -136,7 +138,7 @@ if [[ -z $GITHUB_BASE_REF ]]; then
echo "::debug::Current branch $CURRENT_BRANCH..."

echo "::debug::Fetching previous commit SHA: $PREVIOUS_SHA"
deepenShallowCloneToFindCommit "$PREVIOUS_SHA" "$TARGET_BRANCH"
deepenShallowCloneToFindCommit "$PREVIOUS_SHA" ".." "$CURRENT_SHA" "$TARGET_BRANCH"

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=$?
Expand All @@ -162,7 +164,7 @@ else
echo "::debug::Current branch: $CURRENT_BRANCH"

echo "::debug::Fetching previous commit SHA: $PREVIOUS_SHA"
deepenShallowCloneToFindCommit "$PREVIOUS_SHA" "$TARGET_BRANCH"
deepenShallowCloneToFindCommit "$PREVIOUS_SHA" "..." "$CURRENT_SHA" "$TARGET_BRANCH"

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=$?
Expand Down

0 comments on commit 28a044a

Please sign in to comment.