2

私は現在、クローンに約 40 分かかる米国にあるこの supergit (サブモジュールを含む git リポジトリ) に取り組んでいます。クローン作成時間を短縮するために、そのリポジトリのローカル ミラーを作成する必要が生じました。サブモジュールのパスは、supergit に相対的であり、複数のブランチがあり、いくつかは他のサブモジュールよりも多くのサブモジュールを持っています。

すべてのサブモジュールとその相対パスを解析し、各サブモジュールを正しい場所に複製するスクリプトを作成しましたが、それは 1 つのブランチに対してのみ機能します (すべてのブランチに対してこれを繰り返す必要があり、そこで行き詰まりました)。

このスーパーギットをクリーンな方法で複製する方法はありますか?

4

1 に答える 1

0

Since you can parse one .gitmodules file the only thing left is to find them all:

# 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 ,
 "

Check whether upstream has given different definitions in different commits.

于 2013-10-11T15:14:49.000 に答える