Git将包含所有子模块的repo镜像到另一个repo
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git将包含所有子模块的repo镜像到另一个repo相关的知识,希望对你有一定的参考价值。
我使用命令将https://github.com/boostorg/boost.git镜像到我自己的存储库:
git clone --recursive https://github.com/boostorg/boost.git
cd boost
git push --mirror 'URLOfMyOwnRepo'
为了镜像所有的子模块。但是,它没有达到我预期的方式。
基本上我想要做的是N对1镜像,所以我可以在不同的分支/标签中查看我自己的repo上的源代码。
我试过了:
git clone --mirror --recursive
和
git submodule init
git submodule sync
git submodule update --init --recursive
即使我在本地计算机上获得了这些子模块,我仍然无法将它们镜像到我的存储库。
答案
我刚刚经历了相同的经历,并在从github进行了一次递归克隆的加速后陷入困境。
最后,我创建了以下bash脚本来跳转到每个子模块文件夹并手动将镜像推送到我的私有gitlab repo。然后当我从我的私人gitlab尝试git克隆时,主回购似乎找到了每个子模块而没有任何其他配置在他们的新url。
#!/bin/bash
# This file is meant to help a user mirror the submodule-rich github repo 'boost' on our private gitlab
# start in boost root directory of boost cloned with:
# git clone --recursive https://github.com/boostorg/boost.git
myhost=example.com
git submodule status | awk '{print $2}' > boost_git_submodules_list.txt
while read line; do
cd $line
module=`cut -d'/' -f2 <<< $line`
echo "git push --mirror git@$myhost:boostorg/$module.git"
git push --mirror git@$myhost:boostorg/$module.git
cd -
done < boost_git_submodules_list.txt
它需要一段时间,当它们推动时有一些破损的参考,但我希望这有帮助!
以上是关于Git将包含所有子模块的repo镜像到另一个repo的主要内容,如果未能解决你的问题,请参考以下文章