はじめに
Github では組織名やリポジトリ名を変更すると自動的に URL のリダイレクトが設定されますが,(特に組織名の変更では) 元の URL が空くためローカルブランチの接続先 URL は早いうち更新したほうが安全です.
これが案外手間だったので,submodule に渡って再帰的に自動更新してくれるシェルスクリプト (Bash) を用意してみました.
HTTPS 接続のリポジトリが前提です.
方針
curl
を使うと任意の URL のリダイレクト先を取得できるので,xargs
等ですべての submodule について適当に更新してやればよいです.
完成品
インストール
# required only if shc is not installed
sudo apt-get install shc
git clone https://github.com/uni-kakurenbo/git-redirect-resolver.git
sudo shc -v -r -f ./git-redirect-resolver/git-resolve.sh -o /bin/git-resolve
実行
git-resolve [--submodule] [--recursive]
-
--submodule
: sumodule についても更新します (--recursive
が指定されている場合,無視されます) -
--recursive
: すべての sumodule について,再帰的に更新します
ソースコード
おわりに
submodule の数次第では結構時間がかかります.
まあ,計画的に命名しましょうということです.(はい...)
なお git-resolve
という名前は何かしら衝突しそうなので,被ったら適当に変更してください.
参考文献