[更新] 测试
This commit is contained in:
parent
f9ba75b509
commit
1490805c4e
31
README.md
31
README.md
|
@ -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
113
同步脚本.zsh
Normal 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
|
||||
|
||||
|
||||
#################################
|
||||
# 入口 #
|
||||
#################################
|
||||
|
||||
初始化
|
||||
镜像同步
|
||||
|
Loading…
Reference in New Issue
Block a user