日本語ドキュメントが少ないのでメモ
TortoiseHgでブランチを作成してpushしようとすると、うまくいかないことがある
普通は、ブランチを作成してpushしようとすると、
--------------------------- 新規ブランチの作成 --------------------------- これからプッシュするチェンジセットは新しいブランチを作成します。連携先に新しいブランチを作成しますか? --------------------------- Yes No ---------------------------
みたいなウィンドウが出てきて、Yes
を押せば(下のコンソール部に警告は出るが)pushは無事行われてリモートリポジトリにブランチは作成される
ただし、既に同名ブランチが作成されている場合は新しくブランチを作ろうとすると
--------------------------- ブランチ変更確認 --------------------------- 名前付きブランチ「{ブランチ名}」は既に存在します (最終リビジョンは 6) --------------------------- ブランチを切り直し 現行のブランチへコミット キャンセル ---------------------------
みたいなウィンドウが出てくる。コレ自体はブランチを切り直し
を選択すればローカルにブランチの作成は出来るのだが、デフォルトの状態だとpush出来ない。
pushしようとすると、コンソールには
中止: 新しいヘッド {ハッシュ値} が連携先のブランチ '{作成しようとしているブランチ名}' に作成されます! ヒント: マージするか、新規ヘッドの反映に関して 'hg help push' を参照
的な警告が出ていて、上にもヒント: マージするか、新規ヘッドの反映に関して 'hg help push' を参照
みたいポップアップ?が出てきたりする
恐らくこれはheadを増やすことは混乱の原因という風に考えているmercurialの思想に基づいていると思っているのだが、とにかくこのままだと何回やってもpush出来ない
どうすればいいかというと--force
オプションを追加してpushすればいい。しかしここまでツールでやっているのに一部だけコマンドラインを使うというのも「なら最初からコマンドラインでやれや」となるし、非プログラマが触りづらい
一応このオプションを付けてpushする方法もTortoiseHg上には用意されている。以下のようにする
- 上のツールボックス?から
同期
アイコン(上記画像の赤丸)を選択すると下半分が同期
画面になる 同期
画面のオプション
ボタンを押すpushやpullを強制(安全確認を無効化 --force)
にチェックをいれSave
する- この状態でpushする
これで過去に作成したブランチと同名のブランチを新たに作成する内容のcommitであっても何も警告が出ないでpush出来る
ただし、ここにチェックを入れたままにしていると、push時の警告が出なくなるので必要のない時はチェックを外しておくことを推奨する
元のコミット
画面に戻る時は上記画像の赤丸を選択するといい