チェンジログ
============

.. module:: changelog.dialog
	:synopsis: チェンジログを表示するダイアログ

チェンジログビューア (別名:リポジトリエクスプローラ) は主にリポジトリのリビジョン履歴をグラフィカルにしたり、
チェンジセットに対して様々な操作を実行するのに使用され、リビジョン履歴のグラフや、
親/子リビジョン関係を表示します。またリビジョンごとにどのファイルが変更さたのか、
さらに変更内容についても見ることができます。

.. figure:: figures/log.png
	:alt: チェンジログ

	ツールバー非表示のチェンジログビューア

バージョン 0.9 からチェンジログビューアには各種機能を実行したり、
他のツールを起動したりするためのメニューバーが導入されました。

	:guilabel:`ツール`
		TortoiseHg の各種ツールを別プロセスで起動します。
	:guilabel:`表示`
		オプション機能の表示切り替えと、表示内容の再読み込みします。
	:guilabel:`リビジョン`
		リポジトリ内の特定のチェンジセットを選択します。
	:guilabel:`同期`
		リポジトリ同期機能 (後述) に関する操作をします。
	:guilabel:`ヘルプ`
		システム既定のウェブブラウザでチェンジログビューアに関するヘルプを開きます。
		また TortoiseHg のバージョン情報を表示します。

ツールバーボタンを左から順に見ていきます：

	:guilabel:`再読み込み`
		リビジョン履歴を再読み込みします (別のウィンドウでコミットした時など)。
	:guilabel:`同期ツール`
		同期ツールを開きます。他のリポジトリとチェンジセットのやり取りできます。
	:guilabel:`パッチ`
		MQ パネルの表示を切り替えます。このボタンは MQ 拡張機能がユーザによって
		有効化されているときのみ表示されます。
	:guilabel:`さらにリビジョンを読み込む`
		チェンジセット一覧に次の N 件のリビジョンを読み込みます。
	:guilabel:`全リビジョンを読み込む`
		チェンジセット一覧に残り全てのリビジョンを読み込みます。


同期バー
--------

.. figure:: figures/syncbar.png
	:alt: 同期バー

	チェンジログビューアのリポジトリ同期機能

左から順に

	:guilabel:`受信`
		指定されたリポジトリからチェンジセットをダウンロードして一時的なバンドル
		ファイルとして保存した後、プレビューモードに切り替えます。
		リビジョングラフでは受信したチェンジセットの横に下向きの矢印が表示されます。
	:guilabel:`取り込み`
		プレビュー中のバンドルをローカルのリポジトリに取り込みます (プル)。
		このボタンはバンドルのプレビュー中にのみ有効になります。
		プル後の操作が設定されている場合、取り込み完了後に実行されます。
	:guilabel:`破棄`
		プレビュー中のバンドルを破棄して、プレビューモードから抜けます。
		このボタンはバンドルのプレビュー中にのみ有効になります。
	:guilabel:`プル`
		指定されたリポジトリからチェンジセットをプルし、プル後の操作 (update, fetch,
		または rebase) が実行されます。
	:guilabel:`送信`
		指定されたリポジトリに送信されるチェンジセットを確認します。
		リビジョングラフでは送信されるチェンジセットの横に上向きの矢印が表示されます。
	:guilabel:`プッシュ`
		指定されたリポジトリにチェンジセットをプッシュします。
	:guilabel:`メール送信`
		指定したリポジトリへのチェンジセットをメールで送信します。
	:guilabel:`中止`
		現在の操作を中止します。このボタンは送信チェンジセットの確認中 (incoming)
		にのみ有効になります。

:guilabel:`中止` ボタンの右側には閲覧中のリポジトリに設定された全てのリモートリポジトリ
を含むコンボボックスがあります。デフォルトのリポジトリパスが設定されている場合は
起動時にそれが自動的に選択されます。リポジトリパス設定の詳細については
`hg.1.html#urls <http://www.selenic.com/mercurial/hg.1.html#urls>`_
をご覧ください。

さらにその右側には :guilabel:`プル後の操作` コンボボックスがあり、
同期バーによるプル操作が完了した後に実行する処理を選択することができます。
:guilabel:`更新` (update) 以外の操作として :guilabel:`リベース` (rebase)
と :guilabel:`取得` (fetch) がありますが、それぞれ rebase 拡張機能と
fetch 拡張機能を有効化しない限りリストには表示されません。

:guilabel:`プル後の操作` コンボボックスの右側は :guilabel:`設定` ボタンになります。
このボタンを押すとリポジトリ設定ダイアログの :guilabel:`同期` タブが開かれ、
素早くプル後の操作やリポジトリパスを設定することが可能になっています。

リポジトリ同期機能によってチェンジログビューアが起動した後に追加された
チェンジセットはリビジョングラフでは緑色の星印が表示されます。
これにはコミット、プルされたチェンジセット、適用されたパッチなどを含みます。

.. note::
	緑色の星印が表示された新規チェンジセットを通常表示に戻すには
	:guilabel:`表示 -> マークをリセット` を使用してください。


フィルタバー
------------

.. figure:: figures/searchbar.png
	:alt: フィルタバー

	チェンジログビューアのフィルタ機能

フィルタバーを使えばチェンジセットに素早くフィルタをかけることができます。
左から順に

	:guilabel:`全て`
		全てのチェンジセットを表示します。実質的には全てのフィルタを解除します。
	:guilabel:`タグ`
		タグの付いたチェンジセットのみ表示します。
	:guilabel:`祖先`
		現在選択しているチェンジセットの祖先にあたるチェンジセットのみを表示します。
		このフィルタはチェンジセットが選択されているときのみ有効になります。
	:guilabel:`親リビジョン`
		作業ディレクトリの親リビジョンのみを表示します。
		マージ作業中でない限り常に1つのチェンジセットのみが表示されます。
	:guilabel:`ヘッド`
		リポジトリのヘッドリビジョン (子リビジョンを持たないチェンジセット)
		のみを表示します。
	:guilabel:`マージ`
		リポジトリのマージリビジョン (2つの親リビジョンを持つチェンジセット)
		のみを表示します。
	:guilabel:`マージを非表示`
		マージリビジョンの表示を切り替えるトグルボタンです。他のフィルタと併用できる
		ようにするためラジオボタンではありません。
	:guilabel:`ブランチ`
		選択したブランチに属するリビジョンのみを表示するフィルタです。
		コンボボックスにはリポジトリ内のブランチ名が含まれますが、
		:guilabel:`リポジトリ設定 -> チェンジログ -> 削除済みブランチ`
		の設定が適用されています。
	:guilabel:`カスタムフィルタ`
		最後のコンボボックスはその横にあるテキストボックスに入力するタイプの
		フィルタです。

カスタムフィルタはまず最初にフィルタの種類をコンボボックスで選択し、
テキストボックスに条件を入力してエンターキーを押すことで適用されます。

	:guilabel:`リビジョンの範囲`
		入力されたテキストをリビジョンの範囲として解釈します。詳細は
		`hg.1.html#revisions <http://www.selenic.com/mercurial/hg.1.html#revisions>`_
		をご覧ください。
	:guilabel:`ファイル名パターン`
		入力されたテキストを glob パターンとして解釈します。
		*regexp:* を先頭に付加することで正規表現パターンとして解釈されます。詳細は
		`hg.1.html#patterns <http://www.selenic.com/mercurial/hg.1.html#patterns>`_
		をご覧ください。
	:guilabel:`キーワード`
		入力されたテキストをチェンジセットのメタデータ (ユーザ名、コミットメッセージなど)
		にマッチするキーワードとして解釈します。
	:guilabel:`日付`
		入力されたテキストを日付の範囲として解釈します。詳細は
		`hg.1.html#dates <http://www.selenic.com/mercurial/hg.1.html#dates>`_
		をご覧ください。
	:guilabel:`ユーザ名`
		入力されたテキストをユーザ名 (コミッタ) として解釈します。


グラフパネル
----------------------

グラフ列はリポジトリのリビジョン間の親子関係を表示します。この列は読み込まれている
チェンジセットを可視化するのに必要な幅が自動的に決定されます。チェンジログビューア
全体の表示を保つために表示幅には制限が設けられていますが、読み込み完了後に変更する
ことができます。


リビジョンの右クリックメニュー
------------------------------

グラフパネルのリビジョンを選択して右クリックするとリビジョンの右クリックメニューが
表示されます：

	:guilabel:`GUI 差分ツールで表示`
		指定された GUI 差分表示ツールでこのチェンジセットを開きます。
	:guilabel:`変更点の表示`
		チェンジセットブラウザでこのチェンジセットを開きます。
	:guilabel:`ローカルとの差分`
		GUI 差分表示ツールでこのチェンジセットと作業ディレクトリの内容の差分を表示します。
	:guilabel:`ハッシュ値のコピー`
		このリビジョンの完全なハッシュ値をクリップボードにコピーします。
	:guilabel:`更新...`
		作業ディレクトリをこのリビジョンにおける内容に更新します。 [#rcm1]_
	:guilabel:`マージ...`
		このリビジョンとマージします。 [#rcm2]_
	:guilabel:`パッチの作成...`
		このリビジョンの変更点を含んだパッチを作成します。
	:guilabel:`メールで送信...`
		このリビジョンの変更点をメールで送信します。 [#rcm3]_
	:guilabel:`バンドルの作成...`
		選択中のリビジョンから tip リビジョンまでの全てのリビジョンを含むバンドルを作成します。
	:guilabel:`タグの追加/削除...`
		TortoiseHg タグダイアログを開きます。
	:guilabel:`バックアウト...`
		選択中のリビジョンをバックアウトするチェンジセットを作成します。
	:guilabel:`元に戻す`
		作業ディレクトリの親リビジョンを変更せずに、このリビジョンの内容に戻します。
		十分注意して使用してください。
	:guilabel:`アーカイブに保存...`
		このリビジョンでアーカイブダイアログを開き、リポジトリのバックアップを作成します。
	:guilabel:`ローカルに移植`
		選択中のリビジョンを現在の作業ディレクトリの親リビジョンの上に移植 (transplant)
		します。 *このメニューは transplant 拡張機能が有効なときにのみ表示されます。*
	:guilabel:`MQ にインポート`
		選択中のリビジョンを MQ にインポートします。
		qbase リビジョンまたはヘッドリビジョンにのみ有効です。
		*このメニューは mq 拡張機能が有効なときにのみ表示されます。*
	:guilabel:`削除...`
		選択中のリビジョンとその全ての子孫にあたるリビジョンをリポジトリから削除します。
		[#rcm4]_ *このメニューは mq 拡張機能が有効なときにのみ表示されます。*

リビジョンを選択した後、別のリビジョンの上で右クリックすると先ほどとは異なる
右クリックメニューが表示されます。このメニューにはリビジョン範囲を扱うコマンドが
含まれています。

	:guilabel:`選択中のリビジョンとの差分`
		リビジョン範囲で累積された変更をステータスビューアで開きます。
		これは変更点の中から特定のファイルへの変更だけを取り出して保存するのに便利です。
	:guilabel:`選択中のリビジョンとの GUI 差分表示` [#rcm5]_
		リビジョン範囲で累積された変更を GUI 差分表示ツールで開きます。
	:guilabel:`この範囲をメールで送信`
		リビジョン範囲でメール送信ダイアログを開きます。
	:guilabel:`この範囲をバンドル`
		リビジョン範囲を含むバンドルファイルを作成します。
	:guilabel:`この範囲をパッチとして保存...`
		リビジョン範囲のチェンジセットを個別のパッチとして保存します。
	:guilabel:`マージ...` [#rcm6]_
		このリビジョンと選択中のリビジョンをマージします。もしどちらのリビジョンも
		チェックアウトされていない場合はマージ作業を始める前に最初に選択したリビジョンに更新されます。
		作業ディレクトリがクリーンでない場合、この操作は失敗します。
	:guilabel:`この範囲をローカルに移植`
		リビジョン範囲のチェンジセットを現在の作業ディレクトリの親リビジョンの上に移植
		(transplant) します。
		*このメニューは transplant 拡張機能が有効なときにのみ表示されます。*
	:guilabel:`選択中のリビジョンの上にリベースする`
		このリビジョンを選択中のリビジョンの上にリベースします。
		*このメニューは rebase 拡張機能が有効なときにのみ表示されます。*
	:guilabel:`この範囲を MQ にインポート`
		リビジョン範囲のチェンジセットを MQ にインポートします。
		*このメニューは mq 拡張機能が有効なときにのみ表示されます。*

.. [#rcm1]	選択したリビジョンが指定された状態で TortoiseHg の更新ダイアログが開きます。
.. [#rcm2]	選択したリビジョンが指定された状態で TortoiseHg のマージダイアログが開きます。
.. [#rcm3]	選択したリビジョンが指定された状態で TortoiseHg のメール送信ダイアログが開きます。
.. [#rcm4]	strip コマンドは削除したリビジョンを後で再適用できるようにバンドルファイルとして
			保存します。詳細は `こちら <http://mercurial.selenic.com/wiki/EditingHistory>`_
			を参照してください。
.. [#rcm5]	:menuselection:`グローバル設定 --> TortoiseHg --> GUI 差分表示コマンド`
.. [#rcm6]	選択中のリビジョンが現在の作業ディレクトリの親リビジョンであるときのみ有効になります。


ファイルの右クリックメニュー
----------------------------

左下にあるファイル一覧のファイル名の上で右クリックすると、そのファイルの
右クリックメニューが表示されます：

	:guilabel:`GUI 差分表示`
		このファイルを GUI の差分表示ツールで開きます。
	:guilabel:`ローカルとの差分`
		このファイルと作業ディレクトリの該当ファイルの差分を視覚的に表示します。
	:guilabel:`エディタで表示`
		このファイルを GUI のエディタで開きます。 [#flcm1]_
	:guilabel:`ファイルに保存...`
		このファイルを指定された場所に保存します。
	:guilabel:`履歴の表示`
		このファイルが変更された全てのリビジョンを表示します。 [#flcm2]_
	:guilabel:`行ごとの履歴を表示`
		このファイルの行ごとの変更履歴を表示します。
	:guilabel:`元に戻す`
		このファイルを作業ディレクトリに取り出します。 [#flcm3]_

.. [#flcm1]	:menuselection:`グローバル設定 --> TortoiseHg --> GUI エディタ`
.. [#flcm2]	ファイルの履歴を変更しない単純な変更のみ表示し、削除されたファイルなどは
				表示されません。
.. [#flcm3]	新しいファイル内容は作業ディレクトリへの変更として反映されるので、
				コミットが必要になります。


チェンジセットブラウザ
----------------------

チェンジセットブラウザは動作速度向上のため通常1つのファイルの差分のみ表示します。
一度に全てのファイルの差分を表示したい場合は :guilabel:`[全てのファイル]` を
クリックしてください。またチェンジセットブラウザは最大差分サイズを超えるファイル
は表示せず飛ばします。詳しくは
:menuselection:`グローバル設定 --> TortoiseHg --> 最大差分サイズ`
を参照してください。 :menuselection:`表示
-> 最大差分サイズ制限を無視` を使用すると一時的にこのオプションを無効化できます。

チェンジログビューアとリポジトリ検索ツールは単一のリビジョンまたはいくつかの
リビジョン範囲が連結された差分を表示するためにチェンジセットブラウザを開きます。
チェンジセットブラウザはコミットツールやシェルフツールにとても良く似ています。
左側には変更された全てのファイルが一覧表示され、右側の差分パネルには変更箇所が
行ごとに表示されます。

'変更差分モード' で開いた場合、表示しているチェンジセットからファイルまたは
ファイル内のハンクを選択して特定の変更点を抽出し、ツールバーの
:guilabel:`名前を付けて保存` ボタンからそれらをパッチとして保存できます。
これはリポジトリから必要な変更のみを取り出すのに非常に効率的な方法です。
チェンジセットブラウザはキーボードショートカットの :kbd:`Ctrl-C` に
対応しているため、ハイライトされているハンクをクリップボードにコピーできます。

残念ながら TortoiseHg にはまだ変更点を取り込むためのダイアログが用意されていないため、
これらについてはコマンドラインから :command:`hg import` を実行してください。


キーボードショートカット
------------------------

:kbd:`Ctrl-P`
	作業ディレクトリの親リビジョンに移動します
:kbd:`Ctrl-D`
	GUI の差分表示ツールで選択中のチェンジセットを表示します
:kbd:`Ctrl-R`
	表示内容を再読み込みします

オプション設定
--------------

チェンジログビューアには TortoiseHg 設定ダイアログのチェンジログタブから変更できる
いくつかのオプション項目があります。

	:guilabel:`コミッタの色分け`
		チェンジセットをコミッタごとに色分けします
	:guilabel:`改行を無視してログを表示`
		コミットメッセージの改行を無視して、最大80文字まで表示します
	:guilabel:`読み込むログの件数`
		一度に読み込むリビジョンの件数
	:guilabel:`ハッシュ値のコピー`
		選択時にリビジョンのチェンジセット ID (ハッシュ値) をクリップボードにコピーします。
		廃止予定。
	:guilabel:`削除済みブランチ`
		リポジトリでブランチ名一覧を作成する際に無視するブランチ名をカンマ区切りで指定します。
	:guilabel:`ブランチの色:`
		ブランチ名とその色を "branch:#XXXXXX" の形式で空白文字区切りで指定。
		ブランチ名に含まれる空白文字とコロン(":")はバックスラッシュ("\")で
		エスケープする必要があります。同様に他の文字についても、例えば "\u0040"
		はアットマーク("@")にデコードされ、"\n" は改行になります。
	:guilabel:`非表示タグ:`
		非表示にしたいタグ名を空白区切りで指定。便利な使用例："qbase qparent qtip"
		を設定することで MQ 拡張機能が使用するタグを隠すことができます。
	:guilabel:`折り畳み`
		チェンジセットのヘッダ情報を折り畳み可能にします。このオプションを有効にした場合、
		ヘッダ情報の部分は固定表示になります。

特定のコミッタに指定した色を割り当てたい場合は :file:`Mercurial.ini` ファイルに
次の設定を追加してください： ::

	[tortoisehg]
	authorcolor.コミッタ名 = color

またチェンジログビューアは TortoiseHg タブの以下の設定も反映されます：

	:guilabel:`タブ文字の幅`
		コメント情報の表示でタブ文字1つあたりいくつの空白に展開するかを指定します
	:guilabel:`最大差分サイズ`
		表示する最大の差分ファイルサイズ
	:guilabel:`差分を画面下部に表示`
		ファイル一覧の下に差分表示パネルを配置する


コマンドラインからの実行
------------------------

チェンジログビューアはコマンドラインから起動することもできます： ::

	hgtk log [OPTIONS] [FILE]

	aliases: history

	changelog viewer

	options:

	 -l --limit  limit number of changes displayed

	use "hgtk -v help log" to show global options

.. vim: noet ts=4
