feature: limit the number of commits to be validated #9

Merged
phil merged 2 commits from limit-num-commits-validated into main 2025-06-02 04:10:48 +00:00
Showing only changes of commit aabd314dde - Show all commits

View File

@@ -42,6 +42,7 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
. "$DIR/timestamping"
declare -i MINVERSION=$TIMESTAMPING_VERSION
declare -i MAX_COMMITS_TO_CHECK=20
phil marked this conversation as resolved Outdated
Outdated
Review

what about setting it to infinity for default, so that the original behavior does not change

what about setting it to infinity for default, so that the original behavior does not change
Outdated
Review

Done 0 means "infinity" and is now the default.

Done `0` means "infinity" and is now the default.
declare -A PROCESSED_COMMIT
while [[ $# -gt 0 ]]; do
@@ -62,6 +63,16 @@ while [[ $# -gt 0 ]]; do
shift # past argument
shift # past value
;;
-max|--maxcommits)
INTEGER_REGEX='^[0-9]+$'
if ! [[ "$2" =~ $INTEGER_REGEX ]]; then
echo_error "$KEY: expected positive integer"
exit 1
fi
MAX_COMMITS_TO_CHECK="$2"
shift # past argument
shift # past value
;;
-v|--verbose)
OUT_STREAM=/dev/stdout
shift # past argument
@@ -307,14 +318,17 @@ validate_commit_and_parents() {
if ! validate_commit "$COMMIT_HASH"; then
ALL_PASSED=false
fi
local PARENTS=$(git cat-file -p "$COMMIT_HASH" | awk '/^$/{exit} /parent/ {print}' | sed 's/parent //')
#iterate over all parents of commit
if [ ! -z "$PARENTS" ]; then
while read PARENT_HASH; do
if ! validate_commit_and_parents "$PARENT_HASH"; then
ALL_PASSED=false
fi
done <<< $(printf "%s" "$PARENTS")
NUM_COMMITS_CHECKED=${#PROCESSED_COMMIT[@]}
if [[ ${NUM_COMMITS_CHECKED} -lt ${MAX_COMMITS_TO_CHECK} ]] ; then
local PARENTS=$(git cat-file -p "$COMMIT_HASH" | awk '/^$/{exit} /parent/ {print}' | sed 's/parent //')
#iterate over all parents of commit
if [ ! -z "$PARENTS" ]; then
while read PARENT_HASH; do
if ! validate_commit_and_parents "$PARENT_HASH"; then
ALL_PASSED=false
fi
done <<< $(printf "%s" "$PARENTS")
fi
fi
if [ "$ALL_PASSED" = true ]; then
return 0