2

我目前正在研究位于美国的这个 supergit(一个带有子模块的 git 存储库),克隆大约需要 40 分钟。为了减少克隆时间,需要创建该 repo 的本地镜像。子模块的路径是相对于 supergit 的,并且有多个分支,其中一些具有比其他更多的子模块。

我制作了一个脚本,解析所有子模块及其相对路径,并将每个子模块克隆到正确的位置,但仅适用于一个分支(我必须对每个分支重复此操作,这就是我卡住的地方)。

有没有办法以干净的方式克隆这个超级git?

4

1 回答 1

0

由于您可以解析一个 .gitmodules 文件,剩下的唯一一件事就是找到它们:

# collect all .gitmodules definitions into one file
git rev-list --all --full-history --reverse -- .gitmodules \
| sort -u \
| sed s/$/:.gitmodules/ \
| git cat-file --batch \
| sed /^[0-9a-f]/d \
> gitmodules-aggregate

# format as executable commands to build a dedup'd one:
git config -lf  gitmodules-aggregate | sort -u \
| sed "
   s/=/ /
   s/'/'\\''/g
   s/ / '/
   s/$/'/
   s,^,git config -f gitmodules-consolidated ,
 "

检查上游是否在不同的提交中给出了不同的定义。

于 2013-10-11T15:14:49.000 回答