TortoiseHg

関連ページ

リビジョンをMQのパッチ化する

つまり歴史改変の前準備のqimport操作

パッチ化したい始点(パッチ化したいりビジョンの中でも一番古いリビジョン)を

右クリック→Midify history→import to MQ

でその始点から先端までのリビジョンがMQパッチ化される

複数のMQのパッチを統合する

つまりqfoldの操作。

まず統合のベースとなるパッチを当てた状態にしておく。その状態でその次パッチ(統合したいパッチ)を右クリックしてfoldingを選ぶ

branchをcloseする

ブランチの設定→「現行ブランチを閉じる」を選択してコミットするとcloseされる

rebaseする

TortoiseHgはrebase拡張に対応しているのでグラフ上のリビジョン右クリックのModify Historyからrebaseを選べば、右クリックした対象から先が現在ブランチの先頭にrebaseされる。

当然拡張はONにしてね。

マージで衝突したら

衝突してるから解決してよ的なメッセージがでるのでそこのresolvedをクリック

Unresolved Conflictの欄にぶつかっているファイルが表示されているのでわかる

tool resolveを押すとマージツールが立ち上がって・・・

  • 今マージしようとしているブランチのファイル内容
  • マージされようとしているファイル内容
  • 最終結果

という3つの状態が表示されていると思う。ここでワークの状態を見るとわかるがこの3つに対応したファイルが自動的に生成されている

前2つを参照しつつ正しいソースになるように3つ目を修正する。保存して終了すると。Resolved Conflictの欄に入る

同時に生成された3つのファイルの1個が消えて、ワーク上のオリジナルファイルがorigという拡張子のファイルとして残る

全部のファイルをResolved Conflictに入れたらclose

衝突が解決されているのであとはマージできる

必要ないならばorigのファイルを手で消す。

ファイルの一部だけコミットする

ソースコードをいじっているとついつい目についてしまって、余計なコメントや空白を削除してしまったりして、 本来の修正目的ではない部分も触ってしまうことが多々ある。

Gitにはステージという概念があってそこにファイルの一部分だけを上げてコミットという能動的な動きができるが、 TortoiseHgではshelveの延長のような概念で引き算的に部分コミットが可能になる。

shelveは普通ファイル単位に行うが、ファイルの一部に対してもshelveできる。 shelveのダイアログを開き、対象のファイルを選択、下部の枠の中に親との差分が表示される。 差分の部分の脇に「-」が表示されているのでこいつをクリックして「+」に変えてshelve対象であることにする。

そして上部の「>」アイコン(move selected chunks)をクリックするとshelve対象にした部分だけパッチ化されてshelve領域に格納される。 そしてワーク上のファイルからはパッチ化された部分が取り除かれる。

これでうまくコミットしたくない部分を除去すると部分コミットが可能になる。

コミットが終わったらunshelveする。これも手順は同じ。ファイルを選択してunshelveすればパッチを一気に復元することができるみたいだ。

このshelve対象の塊(ファイルの一部)のことをhunkと呼ぶが、これはdiffが勝手に判断して区切ってしまうので好きな単位にできない。 Gitならばhunkをsplitできるのだが、Hgでは現状できないらしい。残念。

参考サイト

バージョンと製造年月日

タグ

vcs/hg/tortoisehg.txt · 最終更新: 2017-10-10 10:51 by ore