#!/bin/bash # 检查并修复重复的 Change-Id echo "==========================================" echo "检查 Change-Id 重复问题" echo "==========================================" echo "" cd /d/zhini/zhini_im || exit 1 # 1. 检查所有提交的 Change-Id echo "步骤 1: 检查所有提交的 Change-Id..." echo "" # 找出所有 Change-Id git log --format='%H' | while read commit; do changeid=$(git log -1 --format='%B' "$commit" | grep "^Change-Id:" | head -1 | cut -d' ' -f2) if [ -n "$changeid" ]; then echo "$commit $changeid" else echo "$commit MISSING" fi done > /tmp/all_changeids.txt # 检查重复的 echo "步骤 2: 查找重复的 Change-Id..." DUPLICATES=$(cat /tmp/all_changeids.txt | awk '{print $2}' | sort | uniq -d) if [ -z "$DUPLICATES" ]; then echo "✅ 没有发现重复的 Change-Id" else echo "⚠️ 发现重复的 Change-Id:" echo "$DUPLICATES" echo "" echo "这些提交使用了相同的 Change-Id:" for dup in $DUPLICATES; do echo "" echo "Change-Id: $dup" grep " $dup$" /tmp/all_changeids.txt | awk '{print " Commit: " $1}' done fi echo "" echo "步骤 3: 统计信息..." TOTAL=$(git rev-list --count HEAD) WITH_CHANGEID=$(cat /tmp/all_changeids.txt | grep -v "MISSING" | wc -l) MISSING=$(cat /tmp/all_changeids.txt | grep "MISSING" | wc -l) echo "总提交数: $TOTAL" echo "有 Change-Id: $WITH_CHANGEID" echo "缺少 Change-Id: $MISSING" # 清理临时文件 rm -f /tmp/all_changeids.txt