Atlassianから、2025年4月28日以降Bitbucket無料版で利用できるストレージ枠が縮小されるというお知らせが届いていた。今のところ、縮小されるストレージ制限の容量内におさまってはいるものの、先行き不安なので徐々にLAN内の自前のGitサーバーに引っ越していくことにする。
なわけで、Mac環境のGitでローカルリポジトリと連携するリモートリポジトリを変更する、リモートリポジトリを移行する方法をメモしておく。
Bitbucketでホストされているリポジトリ git@bitbucket.org:username/repo.git から、自前のGitサーバーの共有リポジトリ git@myserver.local:repo.git に引っ越す例:
ローカルリポジトリとリモートリポジトリの内容は同じになっており、「nothing to commit, working tree clean」な状態であるものとする。 (心配性の人はローカルリポジトリのバックアップを作成しておいたほうが良かろう。)
現在、ローカルと連携しているリモートリポジトリの設定を確認する。
% git remote -v
origin git@bitbucket.org:username/repo.git (fetch)
origin git@bitbucket.org:username/repo.git (push)
自前のサーバー上に同名のベアリポジトリを作成する。
myserver$ git init --bare repo.git
連携するリモートリポジトリの設定を自前のGitサーバーに変更する。
% git remote set-url origin git@myserver.local:repo.git
% git remote -v
origin git@myserver.local:repo.git (fetch)
origin git@myserver.local:repo.git (push)
すべてのブランチと、すべてのタグを新しいリモートリポジトリにプッシュする。
% git push -u origin --all
% git push origin --tags
できあがり。
のハズなんだが、アレレ、なんか変だぞ。いままでと違う!?
GUIクライアントのSourcetreeを使うとプルにえらく時間がかかる。
変更がまったくない状態でのプル操作にも関わらず、2分30秒もかかっている。 エラーが出るわけではなく、待っていれば終わるのだがとにかく異様に遅い。
Sourcetreeのリポジトリメニュー「プル...」を選択し、「詳細な出力を表示」してみると git fetch origin; git pull origin master
を実行しているようだ。
同じ処理をターミナルからコマンドラインで実行してみると、一瞬(1秒もかからない)で完了する。
SourcetreeアプリのGUIから実行した場合だけ、プッシュやプルなどリモートがらみの操作が異様に遅い。なぜに?
どうやら名前解決に問題があるようだ。
「myserver.local」のようなBonjour名(ドメイン名が .local
になっている、mDNSで使われるホスト名)を使用していると、このトラブルが発生する。
これについて、Sourcetree(バージョン 4.2.10)側に何か設定項目がないか探したが見当たらない。
Sourcetreeは Bitbucket + Mercurial の時代から便利に使ってるんだけど……
どなたか解決方法を知っていたら、こっそり教えてくださいませませ。 (サーバーのIPアドレスを直接指定しろとか、内部向けDNSを用意しろとか、/etc/hostsを変更しろとかいうのはナシで。)
サーバー(LAN内)でIPv6が構成されていないと問題が発生するようだ。 対症療法として(可能なら)Sourcetreeを利用するMac側のIPv6を無効化する手がある。
関連記事: 「MercurialからGitへの移行」
0 件のコメント:
コメントを投稿