🐛 fix bug
Hello from ImmortalWrt / say-hello (push) Successful in 0s
Details
Hello from ImmortalWrt / say-hello (push) Successful in 0s
Details
This commit is contained in:
parent
7373553270
commit
fa21511d1a
|
|
@ -440,9 +440,9 @@ jobs:
|
||||||
echo ""
|
echo ""
|
||||||
echo "🔍 扫描提交记录..."
|
echo "🔍 扫描提交记录..."
|
||||||
|
|
||||||
# ============================================
|
TEMP_COMMITS=$(mktemp)
|
||||||
# 使用 NULL 分隔符读取 git log (最安全可靠的方式)
|
git log $COMMIT_RANGE --no-merges --reverse --format="COMMIT_START%n%H%n%an%n%s%nBODY_START%n%b%nBODY_END" > "$TEMP_COMMITS"
|
||||||
# ============================================
|
|
||||||
declare -a COMMITS_HASH
|
declare -a COMMITS_HASH
|
||||||
declare -a COMMITS_AUTHOR
|
declare -a COMMITS_AUTHOR
|
||||||
declare -a COMMITS_MESSAGE
|
declare -a COMMITS_MESSAGE
|
||||||
|
|
@ -458,49 +458,98 @@ jobs:
|
||||||
|
|
||||||
echo "📋 已加载 ${#IGNORE_PATTERNS[@]} 个忽略模式"
|
echo "📋 已加载 ${#IGNORE_PATTERNS[@]} 个忽略模式"
|
||||||
|
|
||||||
VALID_COUNT=0
|
COMMIT_INDEX=0
|
||||||
|
CURRENT_HASH=""
|
||||||
|
CURRENT_AUTHOR=""
|
||||||
|
CURRENT_MESSAGE=""
|
||||||
|
CURRENT_BODY=""
|
||||||
|
IN_BODY=false
|
||||||
SKIPPED_COUNT=0
|
SKIPPED_COUNT=0
|
||||||
|
|
||||||
# 使用 NULL 分隔符读取 commits
|
while IFS= read -r line; do
|
||||||
# -z: 使用 NULL 字符分隔输出
|
if [[ "$line" == "COMMIT_START" ]]; then
|
||||||
# %x00: 在格式中插入 NULL 字符
|
# 处理前一个 commit
|
||||||
# 格式: 完整hash \0 作者 \0 主题 \0 正文 \0
|
if [ -n "$CURRENT_HASH" ]; then
|
||||||
while IFS= read -r -d '' hash && \
|
SHOULD_SKIP=false
|
||||||
IFS= read -r -d '' author && \
|
for pattern in "${IGNORE_PATTERNS[@]}"; do
|
||||||
IFS= read -r -d '' subject && \
|
[ -z "$pattern" ] && continue
|
||||||
IFS= read -r -d '' body; do
|
if echo "$CURRENT_MESSAGE" | grep -qiE "$pattern"; then
|
||||||
|
SHOULD_SKIP=true
|
||||||
|
echo " ⏭️ 跳过: ${CURRENT_MESSAGE:0:70}... (匹配: ${pattern})"
|
||||||
|
SKIPPED_COUNT=$((SKIPPED_COUNT + 1))
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# 检查是否应该忽略此提交
|
if [ "$SHOULD_SKIP" = false ]; then
|
||||||
|
COMMITS_HASH[$COMMIT_INDEX]="$CURRENT_HASH"
|
||||||
|
COMMITS_AUTHOR[$COMMIT_INDEX]="$CURRENT_AUTHOR"
|
||||||
|
COMMITS_MESSAGE[$COMMIT_INDEX]="$CURRENT_MESSAGE"
|
||||||
|
COMMITS_BODY[$COMMIT_INDEX]="$CURRENT_BODY"
|
||||||
|
COMMIT_INDEX=$((COMMIT_INDEX + 1))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 重置状态
|
||||||
|
CURRENT_HASH=""
|
||||||
|
CURRENT_AUTHOR=""
|
||||||
|
CURRENT_MESSAGE=""
|
||||||
|
CURRENT_BODY=""
|
||||||
|
IN_BODY=false
|
||||||
|
STATE="HASH"
|
||||||
|
|
||||||
|
elif [[ "$line" == "BODY_START" ]]; then
|
||||||
|
IN_BODY=true
|
||||||
|
CURRENT_BODY=""
|
||||||
|
elif [[ "$line" == "BODY_END" ]]; then
|
||||||
|
IN_BODY=false
|
||||||
|
elif [ "$IN_BODY" = true ]; then
|
||||||
|
if [ -n "$CURRENT_BODY" ]; then
|
||||||
|
CURRENT_BODY="${CURRENT_BODY}"$'\n'"${line}"
|
||||||
|
else
|
||||||
|
CURRENT_BODY="$line"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -z "$CURRENT_HASH" ]; then
|
||||||
|
CURRENT_HASH="$line"
|
||||||
|
elif [ -z "$CURRENT_AUTHOR" ]; then
|
||||||
|
CURRENT_AUTHOR="$line"
|
||||||
|
elif [ -z "$CURRENT_MESSAGE" ]; then
|
||||||
|
CURRENT_MESSAGE="$line"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done < "$TEMP_COMMITS"
|
||||||
|
|
||||||
|
# 处理最后一个 commit
|
||||||
|
if [ -n "$CURRENT_HASH" ]; then
|
||||||
SHOULD_SKIP=false
|
SHOULD_SKIP=false
|
||||||
MATCHED_PATTERN=""
|
|
||||||
|
|
||||||
for pattern in "${IGNORE_PATTERNS[@]}"; do
|
for pattern in "${IGNORE_PATTERNS[@]}"; do
|
||||||
# 跳过空模式
|
|
||||||
[ -z "$pattern" ] && continue
|
[ -z "$pattern" ] && continue
|
||||||
|
if echo "$CURRENT_MESSAGE" | grep -qiE "$pattern"; then
|
||||||
if [[ "$subject" =~ $pattern ]]; then
|
|
||||||
SHOULD_SKIP=true
|
SHOULD_SKIP=true
|
||||||
MATCHED_PATTERN="$pattern"
|
echo " ⏭️ 跳过: ${CURRENT_MESSAGE:0:70}... (匹配: ${pattern})"
|
||||||
|
SKIPPED_COUNT=$((SKIPPED_COUNT + 1))
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$SHOULD_SKIP" = true ]; then
|
if [ "$SHOULD_SKIP" = false ]; then
|
||||||
echo " ⏭️ 跳过: ${subject:0:70}... (匹配: ${MATCHED_PATTERN})"
|
COMMITS_HASH[$COMMIT_INDEX]="$CURRENT_HASH"
|
||||||
SKIPPED_COUNT=$((SKIPPED_COUNT + 1))
|
COMMITS_AUTHOR[$COMMIT_INDEX]="$CURRENT_AUTHOR"
|
||||||
else
|
COMMITS_MESSAGE[$COMMIT_INDEX]="$CURRENT_MESSAGE"
|
||||||
COMMITS_HASH+=("$hash")
|
COMMITS_BODY[$COMMIT_INDEX]="$CURRENT_BODY"
|
||||||
COMMITS_AUTHOR+=("$author")
|
COMMIT_INDEX=$((COMMIT_INDEX + 1))
|
||||||
COMMITS_MESSAGE+=("$subject")
|
|
||||||
COMMITS_BODY+=("$body")
|
|
||||||
VALID_COUNT=$((VALID_COUNT + 1))
|
|
||||||
fi
|
fi
|
||||||
done < <(git log $COMMIT_RANGE --no-merges --reverse -z --format="%H%x00%an%x00%s%x00%b%x00")
|
fi
|
||||||
|
|
||||||
|
rm -f "$TEMP_COMMITS"
|
||||||
|
|
||||||
|
VALID_COUNT=$COMMIT_INDEX
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "📊 提交统计:"
|
echo "📊 提交统计:"
|
||||||
echo " ✅ 有效提交: $VALID_COUNT"
|
echo " ✓ 有效提交: $VALID_COUNT"
|
||||||
echo " ⏭️ 已跳过: $SKIPPED_COUNT"
|
echo " ⏭️ 已跳过: $SKIPPED_COUNT"
|
||||||
echo " 📝 总计: $((VALID_COUNT + SKIPPED_COUNT))"
|
echo " 📝 总计: $((VALID_COUNT + SKIPPED_COUNT))"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|
@ -624,10 +673,8 @@ jobs:
|
||||||
/^## :bookmark: '"${CHANGELOG_VERSION}"'$/ { in_version=1; next }
|
/^## :bookmark: '"${CHANGELOG_VERSION}"'$/ { in_version=1; next }
|
||||||
/^## :bookmark: / && in_version { in_version=0 }
|
/^## :bookmark: / && in_version { in_version=0 }
|
||||||
in_version && /\(\[([0-9a-f]{7})\]/ {
|
in_version && /\(\[([0-9a-f]{7})\]/ {
|
||||||
if(match($0, /\(\[([0-9a-f]{7})\]/)) {
|
match($0, /\(\[([0-9a-f]{7})\]/, arr)
|
||||||
hash = substr($0, RSTART+2, 7)
|
print arr[1]
|
||||||
print arr[1]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
' CHANGELOG.md | sort -u)
|
' CHANGELOG.md | sort -u)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue