gitリポジトリをバックアップするためにgitバンドルを使用しています。最近のバージョンのgitでは、サブモジュールのリポジトリメタデータは、サブモジュール内の.gitディレクトリに保存されていた以前とは対照的に、親リポジトリの.git/modulesに保存されます。
git-bundleをサブモジュールで実行すると、サブモジュールを省略して、親リポジトリのバンドルが作成されます。
これに光を当てることができる人はいますか?
サブモジュールのgitバンドルを作成するにはどうすればよいですか?
参照: gitメーリングリストの質問
編集:
sschuberthでそれが機能することを読んだ後、テストするスクリプトを作成し、それが機能することを確認できます。リポジトリの最上位ディレクトリにあるかどうかを知るために.gitディレクトリの存在を確認することに依存したバックアップスクリプトがあり、サブモジュールが.gitファイルの使用を開始したときに壊れました。リポジトリの最上位フォルダにいることを保証するための推奨される方法を誰かが知っているなら、私は興味があります。どうしてこれを逃したのかわかりません。
サブモジュールのテストスクリプトを作成する必要がある人が興味を持った場合に備えて、これは私が使用したスクリプトです。
#!/bin/bash
git --version
mkdir super
mkdir subRemote
touch super/superFile.txt
touch subRemote/subFile.txt
cd super
git init
git add --all
git commit -am"Initial commit"
cd ..
cd subRemote
git init
git add --all
git commit -am"Initial commit"
cd ..
cd super
git submodule add ../subRemote/.git
git add --all
git commit -am"added submodule"
git submodule update
echo -e "\ngit log in super:"
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all
cd subRemote
echo -e "\ngit bundle:"
git bundle create ../../submoduleBundle --all --remotes
cd ..
cd ..
git clone --mirror submoduleBundle bundledSub/.git
cd bundledSub
git config core.bare false
git config core.logallrefupdates true
git remote rm origin
git checkout
cd ..
#------------------------------------------------
cd super
echo -e "\nfiles in super":
ls -alh
cd ..
cd super/subRemote
echo -e "\nfiles in super/subRemote":
ls -alh
cd ../..
cd bundledSub
echo -e "\nfiles in bundledSub":
ls -alh
cd ..