赞
踩
本文记录在 Windows 的 WSL 环境下使用 shell 脚本工具实现 gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL。
实验使用的电脑如下:
CPU:
Intel Core i5 8265U
操作系统:
Microsoft Windows 10 Professional (x64), Version 22H2, Build 19045.4412
操作系统详细信息如下:
Microsoft Windows 10 Professional (x64), Version 22H2, Build 19045.4412
参考
【安装笔记-20240520-Windows-自定义 WSL2 安装位置】
【调试笔记-20240522-Windows-WSL 修改已安装发行版名称】
实现 gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL。
gitee 仓库:
github 仓库:
参考 【https://gitee.com/david921518/dev-tools/tree/gitee/github-merge】
以本仓库为例,实现 gitee 同步 github 的仓库,并保证访问 gitee.com 网站时所有 URL 调整到指向 gitee.com 的仓库路径
github 上创建仓库后,默认生成 main 的主分支
gitee 分支用于给 gitee.com 的仓库访问,此分支上所有指向 github.com 仓库的 URL 都将修改为指向 gitee.com 的仓库
导入 github 仓库后,在 gitee 的“管理”页修改默认分支为 gitee
1、 本地主机上建立两个工作目录,/main/ 目录保存 github 仓库的 main 分支,/gitee/ 目录保存 github 仓库的 gitee 分支;
2、 更新 /main/ 目录后,使用字符串替换工具将指向 github.com 的 URL 修改为指向 gitee.com 的 URL
3、 复制修改后的 /main/ 目录文件内容到 /gitee/ 目录中
4、 将 /gitee/ 目录中的内容推送到 github 仓库的 gitee 分支
5、 触发 gitee.com 上对应的仓库进行 github.com 的仓库同步动作,实现两个 git 仓库同步
初始化工作目录的脚本 setup.sh 如下:
#!/bin/sh
git clone -b main git@github.com:david921518/dev-tools.git main
git clone -b gitee git@github.com:david921518/dev-tools.git gitee
git clone -b gitlab git@github.com:david921518/dev-tools.git gitlab
URL 替换的脚本 replace_gitee.sh 如下:
#!/bin/sh # tested on Ubuntu 22.04 github_url='https://github.com/david921518/dev-tools/blob/master' gitee_url='https://gitee.com/david921518/dev-tools/blob/gitee' ignore_files=("./github-merge/setup.sh" "./github-merge/replace_gitee.sh" "./LICENSE") rm -rf ./main_tmp mkdir -p ./main_tmp rm -rf ./gitee/* cp -af ./main/* ./main_tmp/ cp -af ./main/* ./gitee/ # sed 's$https://github.com/david921518/dev-tools/blob/master$https://gitee.com/david921518/dev-tools/blob/gitee$' ./main/github-merge/README.md > ./gitee/github-merge/README.md cd ./main_tmp/ files=$(find .) cd ../ for filename in $files do if [ -f ./main_tmp/$filename ]; then echo "./main_tmp/$filename is regular file" matched='false'; for elem in "${ignore_files[@]}"; do if [[ "$elem" == "$filename" ]]; then matched='true'; fi done if [[ "$matched" == 'false' ]]; then echo "replace $filename" sed "s^$github_url^$gitee_url^" "./main_tmp/$filename" > "./gitee/$filename" else echo "ignore $filename" fi else echo "./main_tmp/$filename is not regular file" fi done rm -rf ./main_tmp/ # git commit to github cd ./gitee/ git add * git commit -a -m "merge with main branch" git push origin gitee cd ../
2、安装笔记-20240520-Windows-自定义 WSL2 安装位置
3、调试笔记-20240522-Windows-WSL 修改已安装发行版名称
本文记录在 Windows 的 WSL 环境下使用 shell 脚本工具实现 gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。