【调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL】

调试笔记-系列文章目录

调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL


文章目录

  • 调试笔记-系列文章目录
    • [调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL](#调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL)
  • 前言
  • 一、调试环境
  • 二、调试步骤
    • 实现步骤
      • [1、github 上创建仓库](#1、github 上创建仓库)
      • [2、在 github 仓库上创建 gitee 分支](#2、在 github 仓库上创建 gitee 分支)
      • [3、在 gitee 上导入 github 的仓库](#3、在 gitee 上导入 github 的仓库)
      • [4、使用本工具完成 git 上 gitee 分支对 main 分支的同步](#4、使用本工具完成 git 上 gitee 分支对 main 分支的同步)
      • [5、gitee 仓库定期同步 github 仓库](#5、gitee 仓库定期同步 github 仓库)
    • 工作原理
  • 三、应用场景
    • [gitee 仓库同步 github 仓库,并保持 URL 指向自己仓库的地址](#gitee 仓库同步 github 仓库,并保持 URL 指向自己仓库的地址)
  • 四、参考资料
  • 总结

前言

本文记录在 Windows 的 WSL 环境下使用 shell 脚本工具实现 gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL。

实验使用的电脑如下:

CPU:

shell 复制代码
Intel Core i5 8265U

操作系统:

shell 复制代码
Microsoft Windows 10  Professional (x64), Version 22H2, Build 19045.4412

一、调试环境


操作系统:Windows 10 专业版

操作系统详细信息如下:

shell 复制代码
Microsoft Windows 10  Professional (x64), Version 22H2, Build 19045.4412

调试环境

  • Windows 系统下安装 WSL Ubuntu 22.04 LTS 版本,shell 脚本调试在此 WSL 环境中进行。

参考

安装笔记-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 的仓库路径

1、github 上创建仓库

github 上创建仓库后,默认生成 main 的主分支

2、在 github 仓库上创建 gitee 分支

gitee 分支用于给 gitee.com 的仓库访问,此分支上所有指向 github.com 仓库的 URL 都将修改为指向 gitee.com 的仓库

3、在 gitee 上导入 github 的仓库

导入 github 仓库后,在 gitee 的"管理"页修改默认分支为 gitee

4、使用本工具完成 git 上 gitee 分支对 main 分支的同步

5、gitee 仓库定期同步 github 仓库

工作原理

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 如下:

bash 复制代码
#!/bin/sh

git clone -b main [email protected]:david921518/dev-tools.git main
git clone -b gitee [email protected]:david921518/dev-tools.git gitee
git clone -b gitlab [email protected]:david921518/dev-tools.git gitlab

URL 替换的脚本 replace_gitee.sh 如下:

bash 复制代码
#!/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 ../

三、应用场景

gitee 仓库同步 github 仓库,并保持 URL 指向自己仓库的地址


四、参考资料

1、GitHub 分支合并工具

2、安装笔记-20240520-Windows-自定义 WSL2 安装位置

3、调试笔记-20240522-Windows-WSL 修改已安装发行版名称


总结

本文记录在 Windows 的 WSL 环境下使用 shell 脚本工具实现 gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL。

相关推荐
山川而川-R25 分钟前
开机自启动python程序_ubuntu22.04
linux·运维·服务器
天宫风子39 分钟前
抽象代数小述(二之前)
经验分享·笔记·算法·生活·抽象代数
岑梓铭1 小时前
考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示(浮点数篇)
笔记·考研·408·计算机组成原理
yangshuo12811 小时前
风车OVF镜像:解放AI开发限制的Ubuntu精简系统
linux·人工智能·ubuntu
flypig哗啦啦2 小时前
ubuntu服务器版启动卡在start job is running for wait for...to be Configured
linux·运维·ubuntu
_Itachi__2 小时前
LeetCode 热题 100 114. 二叉树展开为链表
linux·leetcode·链表
ClearViper32 小时前
Java的多线程笔记
java·开发语言·笔记
あ-2 小时前
CentOS7 OpenSSL升级1.1.1w
linux
tianyuanwo2 小时前
深入解读tcpdump:原理、数据结构与操作手册
linux·运维·服务器·tcpdump
电鱼智能的电小鱼4 小时前
产线视觉检测设备技术方案:基于EFISH-SCB-RK3588/SAIL-RK3588的国产化替代赛扬N100/N150全场景技术解析
linux·人工智能·嵌入式硬件·计算机视觉·视觉检测·实时音视频