[更新] 测试

This commit is contained in:
寻觅 2024-08-29 16:13:10 +08:00
parent f9ba75b509
commit 1490805c4e
2 changed files with 143 additions and 1 deletions

View File

@ -1 +1,30 @@
1 # RD同步脚本使用说明
由于龙芯总部Git同步只能使用ssh模式, 而Gitea镜像只能使用http模式, 故无法直接调用gitea本身的镜像模式镜像总部仓库, 本项目主要目的就是将远程仓库 A 的指定分支自动同步到远程仓库 B 中
本脚本需要在具有 言灵 环境的主机下使用, 且需要按照特定方式拉去仓库后方可使用
## git镜像方法
这里我们所有的拉去方式使用ssh拉去, 这样能避免输入用户密钥的操作!
### 从原始仓库中拉去项目
需要将原始仓库的远程名称改成rd, 然后在将我们镜像仓库添加取名为`origin`, 具体使用示例如下:
```shell
```
### 从镜像仓库中拉去项目
如果项目已经被我们手动同步到自建的仓库中, 可以先使用`git clone`拉去后在手动添加原始仓库连接
```shell
git clone ssh://git@gitea.whlug.cn:33262/rd-mirror/uefi-loongarch.git
cd uefi-loongarch
# 主要要添加这一句, 添加一个名为rd的远程同步仓库
git remote add rd ssh://fanxudong@rd.loongson.cn:29418/uefi-loongarch
```

113
同步脚本.zsh Normal file
View File

@ -0,0 +1,113 @@
#!/usr/bin/zsh
# 本脚本适用于将 总部 RD仓库 中的代码定期镜像到 子公司 Gitea仓库 中
# 加载言灵配置( http://yum.gdie.top:50200/LK/x )
source $HOME/.config/xunmi/信息
source $言灵一路径/x/公共/函数.zsh
# 路径列表包含脚本本身路径, 脚本路径的上一级路径, 执行脚本用户的家路径, 以及根路径
脚本路径="$(dirname "$(realpath "$0")")"
路径列表=("$(dirname "$脚本路径")" "$脚本路径" "$HOME" "/")
# 需要同步任务的任务文件名(需要和本脚本同级的位置)
同步任务="uefi-loongarch"
# 如果需要写明一个默认分支名
默认分支="master"
任务路径=""
#################################
# 函数 #
#################################
# 检测路径是否存在, 并为目录
路径检测(){
if [[ -d "$1" ]]; then
return 0 # 路径存在
else
return 1 # 路径不存在
fi
}
# 检测环境是否有问题
初始化(){
# 检测言灵相关依赖是否被正常引入
[[ ${言灵一函数} == 1 ]] || . ${目录一根}/公共/函数.zsh || exit 1 || echo "*-*-* 缺少必要环境(言灵) *-*-*"
输出 2 "RD同步( $同步任务 )任务启动"
# 判断任务是绝对路径还是相对路径, 并检测路径是否存在
if [[ "$同步任务" == /* ]]; then
输出 2 "发现绝对值路径, 正在识别路径是否存在"
检查路径 "$同步任务"
if [[ $? -eq 0 ]]; then
任务路径=$同步任务
输出 0 "已找到 $任务路径"
else
输出 1 "未找到任务目标($同步任务)"
exit 1
fi
else
输出 2 "发现相对路径, 正在查找常用路径是否存在指定项目(本级, 上级, 家, 根)"
# 遍历路径列表
检查数量=0
for 路径 in "${路径列表[@]}"; do
任务路径=$路径/$同步任务
路径检测 "$任务路径" || 输出 0 "检测到 $任务路径"
if [[ $? -eq 0 ]]; then
输出 0 "已找到 $任务路径"
break
else
检查数量=$((检查数量 + 1))
fi
done
if [[ $检测数量 -eq ${#路径列表[@]} ]]; then
输出 1 "未找到任务目标($同步任务)"
fi
fi
# 判断是否为正常git仓库, 仓库中是否包含指定远程地址
配置文件="$任务路径/.git/config"
if [[ -e $配置文件 ]]; then
输出 2 "检测Git配置..."
# 判断是否有rd仓库的地址
if grep -P -z -q '\[remote "rd"\][\s\S]*?url = ssh://fanxudong@rd.loongson.cn:29418/' $配置文件; then
输出 0 "已找到rd配置"
cd $任务路径
if git show-ref --quiet refs/heads/$默认分支; then
输出 0 "已找到分支: $默认分支"
else
输出 1 "未找到分支($默认分支)"
fi
cd -
else
输出 1 "未找到rd地址, 请按照说明文档(README.md)中的方案配置仓库后在调用此脚本!"
fi
else
输出 1 "未找到Git配置($配置文件)"
fi
}
镜像同步(){
输出 2 "开始同步镜像"
cd $任务路径
色彩一灰色
# 更新默认分支
git pull rd $默认分支
# 更新所有分支和标签
git fetch --all --tags
# 推送所有分支和标签
git push origin --all --tags
色彩一清除
cd -
}
#cd $任务路径
# 从rd上拉去最新的任务 ( 后续考虑使用: git fetch rd 代替)
#git pull rd master
#################################
# 入口 #
#################################
初始化
镜像同步