chore: config变更,及匹配模式优化

This commit is contained in:
2025-11-18 10:04:11 +08:00
parent f76320f732
commit 4f299a8bf1
4 changed files with 48 additions and 26 deletions

View File

@@ -12,5 +12,5 @@ services:
volumes: volumes:
- ./:/working_dir/scripts - ./:/working_dir/scripts
- ../patch-dir:/working_dir/patchs - ../patch-dir:/working_dir/patchs
- ../../ftp-src/config:/working_dir/old-shop-src - ../../ftp-src/:/working_dir/old-shop-src
- ../../src/config:/working_dir/new-shop-src - ../../src/:/working_dir/new-shop-src

View File

@@ -18,7 +18,21 @@ PATCH_EMAIL="devops@aigc-quickapp.com"
## 包含的文件模式 ## 包含的文件模式
INCLUDE_PATTERNS=( INCLUDE_PATTERNS=(
".+/.*" # 匹配所有子目录下的文件 ".+/.*" # 匹配所有子目录下的所有文件
".env"
".htaccess"
'.user.ini'
'404.html'
"composer.json"
"index.html"
"index.php"
"install.lock"
"install.php"
"nginx.htaccess"
"think"
"LICENSE"
"README.md"
"robots.txt"
) )
## 排除的文件模式 ## 排除的文件模式
@@ -29,19 +43,21 @@ EXCLUDE_PATTERNS=(
"*.swp" "*.swp"
"*.swx" "*.swx"
"^.github/" "^.github/"
"/node_modules/*" # 排除任何位置的node_modules文件夹及其所有子目录和文件
"/__pycache__/*" ".*/node_modules($|/.*)"
# 排除以下一级文件夹 # 排除任何位置的__pycache__文件夹及其所有子目录和文件
".*/__pycache__($|/.*)"
# 排除根目录下的一级文件夹及其所有子目录和文件
"^.git/" "^.git/"
"^cache/" "^cache($|/.*)"
"^temp/" "^temp($|/.*)"
"^tmp/" "^tmp($|/.*)"
"^logs/" "^logs($|/.*)"
"^runtime/" "^runtime($|/.*)"
"^uploads/" "^uploads($|/.*)"
"^attachment/" "^attachment($|/.*)"
"^h5/" "^h5($|/.*)"
"^hwapp/" "^hwapp($|/.*)"
".DS_Store" ".DS_Store"
"Thumbs.db" "Thumbs.db"
) )

View File

@@ -335,10 +335,10 @@ scan_directory() {
# 获取文件信息 # 获取文件信息
local file_info local file_info
if file_info=$(get_file_info "$file_path" 2>/dev/null); then if file_info=$(get_file_info "$file_path" 2>/dev/null); then
# 检查是否应该包含 # 检查是否应该包含该文件
if should_include_file "$file_path" "$file_info"; then local relative_path="${file_path#$base_dir/}" # 这里一定要使用相对路径方便在config中配置匹配模式
if should_include_file "$relative_path" "$file_info"; then
local file_hash=$(get_file_hash "$file_path" "$HASH_ALGORITHM") local file_hash=$(get_file_hash "$file_path" "$HASH_ALGORITHM")
local relative_path="${file_path#$base_dir/}"
echo "$relative_path|$file_info|$file_hash" >> "$output_file" echo "$relative_path|$file_info|$file_hash" >> "$output_file"
((file_count++)) ((file_count++))

View File

@@ -18,7 +18,7 @@ error() { echo -e "${RED}[ERROR]${NC} $1"; }
full_patch_workflow() { full_patch_workflow() {
local source_dir="$1" local source_dir="$1"
local target_dir="$2" local target_dir="$2"
local patch_name="$3" local patch_name="$3" # 补丁文件路径
log "开始完整补丁管理工作流" log "开始完整补丁管理工作流"
echo "========================================" echo "========================================"
@@ -109,10 +109,14 @@ rollback_workflow() {
# 主函数 # 主函数
main() { main() {
case "${1:-}" in case "${1:-}" in
"generate") "generate-full")
shift shift
full_patch_workflow "$@" full_patch_workflow "$@"
;; ;;
"generate")
shift
"$SCRIPT_DIR/patch_generator.sh" "$@"
;;
"apply") "apply")
shift shift
"$SCRIPT_DIR/patch_applier.sh" "$@" "$SCRIPT_DIR/patch_applier.sh" "$@"
@@ -132,14 +136,16 @@ main() {
*) *)
echo "用法: $0 <command> [args]" echo "用法: $0 <command> [args]"
echo "命令:" echo "命令:"
echo " generate <目录> <目标目录> <补丁名称> # 完整工作流" echo " generate-full <目录> <目录> [补丁名称] # 生成补丁"
echo " generate <旧目录> <新目录> [补丁名称] # 生成补丁"
echo " apply <补丁包路径> [dry-run] # 应用补丁" echo " apply <补丁包路径> [dry-run] # 应用补丁"
echo " rollback [回滚包路径] # 回滚补丁" echo " rollback [回滚包路径] # 回滚补丁"
echo " verify <补丁包路径> [验证类型] # 验证补丁" echo " verify <补丁包路径> [验证类型] # 验证补丁"
echo " batch-verify <目录> # 批量验证" echo " batch-verify <目录> # 批量验证"
echo "" echo ""
echo "示例:" echo "示例:"
echo " $0 generate /old/version /new/version security-hotfix" echo " 进入项目目录,然后执行"
echo " $0 generate /old/version /new/version"
echo " $0 apply /opt/patches/patch.tar.gz dry-run" echo " $0 apply /opt/patches/patch.tar.gz dry-run"
echo " $0 rollback /var/backups/patch/backup.tar.gz" echo " $0 rollback /var/backups/patch/backup.tar.gz"
exit 1 exit 1