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

View File

@@ -42,6 +42,7 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
. "$DIR/timestamping" . "$DIR/timestamping"
declare -i MINVERSION=$TIMESTAMPING_VERSION declare -i MINVERSION=$TIMESTAMPING_VERSION
declare -i MAX_COMMITS_TO_CHECK=0
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 declare -A PROCESSED_COMMIT
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
@@ -62,6 +63,16 @@ while [[ $# -gt 0 ]]; do
shift # past argument shift # past argument
shift # past value 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) -v|--verbose)
OUT_STREAM=/dev/stdout OUT_STREAM=/dev/stdout
shift # past argument shift # past argument
@@ -307,6 +318,10 @@ validate_commit_and_parents() {
if ! validate_commit "$COMMIT_HASH"; then if ! validate_commit "$COMMIT_HASH"; then
ALL_PASSED=false ALL_PASSED=false
fi fi
# If MAX_COMMITS_TO_CHECK is zero (or a negative number) then that is understood as "infinity".
# So perform the next commit check if we have not reached the limit, or if the limit is "infinity".
NUM_COMMITS_CHECKED=${#PROCESSED_COMMIT[@]}
if [[ ${NUM_COMMITS_CHECKED} -lt ${MAX_COMMITS_TO_CHECK} ]] || [[ ${MAX_COMMITS_TO_CHECK} -lt 1 ]]; then
local PARENTS=$(git cat-file -p "$COMMIT_HASH" | awk '/^$/{exit} /parent/ {print}' | sed 's/parent //') local PARENTS=$(git cat-file -p "$COMMIT_HASH" | awk '/^$/{exit} /parent/ {print}' | sed 's/parent //')
#iterate over all parents of commit #iterate over all parents of commit
if [ ! -z "$PARENTS" ]; then if [ ! -z "$PARENTS" ]; then
@@ -316,6 +331,7 @@ validate_commit_and_parents() {
fi fi
done <<< $(printf "%s" "$PARENTS") done <<< $(printf "%s" "$PARENTS")
fi fi
fi
if [ "$ALL_PASSED" = true ]; then if [ "$ALL_PASSED" = true ]; then
return 0 return 0
fi fi