Created
April 21, 2015 06:37
-
-
Save nobeans/69d41bf69add73c2fb81 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
# | |
# NWの制約がある場合に大きいリポジトリをチマチマとpushするスクリプト | |
# | |
# 実行時の注意事項: | |
# 巨大サイズのブランチ操作をするとファイルバッファの出し入れが大きすぎるため、 | |
# git statusするだけで1分ぐらい待たされる場合がある。 | |
# zshのフックでgit statusを発動するなどのモダン環境を使っている場合は、 | |
# 何も操作できなくなってしまう。一時的にbashにするなどで回避すること。 | |
# よく固まる.... | |
# masterブランチからpushしないと、push後にgitlabが500エラーになってしまう。 | |
# 万が一そうなった場合はグループの設定画面から該当リポジトリをいったん削除する。 | |
# というわけで、masterブランチをいじりまくるので待避しておく。 | |
# | |
# bisectスクリプト中でHEAD:masterとpushしても大丈夫だったので、 | |
# 500エラーになるのは初回コミットだけなのかも知れない。 | |
#git branch master-orig master | |
# git bisect用のスクリプト | |
echo "git push origin HEAD:master" > /tmp/push-with-bisect.sh | |
chmod +x /tmp/push-with-bisect.sh | |
# httpでのpush次のサイズ上限を調整する。 | |
# あくまでローカルからNWに送信する前の制限を解除するだけ。 | |
# NW自体の制限(GW等)が解除できるわけではない。 | |
# 以下のエラーメッセージがある場合はこれで改善できる。 | |
# error: RPC failed; result=22, HTTP code = 503 | 477.14 MiB/s | |
# 小さくしておけば、無駄に大きすぎるデータ送信をNW上に流さないためのガードになる。 | |
# NWが遅いのでむしろ小さい方がトータルで速くなるかもしれないしそうでないかもしれない。 | |
# 上限は3GB前後らしい。それ以上は実行時にエラーとなる。 | |
#git config http.postBuffer 104857600 # 100MB | |
#git config http.postBuffer 524288000 # 500MB | |
git config http.postBuffer 1048576000 # 1GB. 1コミット自体が大きすぎる場合は上限を引き上げて躱すしかない... | |
#git config http.postBuffer 2097152000 # 2GB. 1コミット自体が大きすぎる場合は上限を引き上げて躱すしかない... | |
while TRUE | |
do | |
local_mater_id=$(git show -s --format=%H master) | |
origin_master_id=$(git show -s --format=%H origin/master) | |
if [ $local_mater_id = $origin_master_id ]; then | |
echo "Synchronized." | |
break | |
fi | |
echo "----------------------------------------------------------" | |
echo "Start bisect sequence..." | |
git bisect start HEAD origin/master | |
git bisect run /tmp/push-with-bisect.sh | |
git bisect reset | |
done | |
echo "Done." | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment