Files

64 lines
2.0 KiB
Bash

#!/bin/bash
# 获取当前绝对路径,方便日志输出
BASE_DIR=$(pwd)
echo "🚀 开始扫描当前目录下的子文件夹: $BASE_DIR"
echo "--------------------------------------------------"
# 计数器
repo_count=0
updated_count=0
# 遍历当前目录下的所有一级子目录
for dir in "$BASE_DIR"/*/; do
# 确保路径存在(防止空目录匹配)
[ -d "$dir" ] || continue
# 进入子目录
cd "$dir"
# 1. 检测是否为 Git 仓库
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
repo_count=$((repo_count + 1))
dirname=$(basename "$dir")
# 2. 获取所有的 remote 名称
remotes=$(git remote)
has_updates=false
# 3. 遍历当前仓库的远程配置
for remote in $remotes; do
current_url=$(git remote get-url "$remote")
# 检查是否匹配旧域名
if [[ "$current_url" == *"git.onixbyte.com"* ]]; then
new_url=${current_url//git.onixbyte.com/onixbyte.dev}
# 如果是该仓库第一次发现匹配,打印仓库头部信息
if [ "$has_updates" = false ]; then
echo "📦 发现 Git 仓库: [$dirname]"
has_updates=true
fi
echo " ⚙️ 远程 [$remote]:"
echo " 旧地址: $current_url"
echo " 新地址: $new_url"
# 执行替换
git remote set-url "$remote" "$new_url"
fi
done
if [ "$has_updates" = true ]; then
echo " ✅ 该仓库域名已更新完毕。"
echo "--------------------------------------------------"
updated_count=$((updated_count + 1))
fi
fi
# 返回上一级目录,准备检查下一个
cd "$BASE_DIR"
done
echo "🏁 扫描结束!"
echo "📊 统计报告: 共检测了 $repo_count 个 Git 仓库,其中 $updated_count 个执行了域名更新。"