誰がその行を変更したか?

時々どの行が変更されたかだけでなく、ファイル内で、誰がどの行を変更したのか正確に知りたいことがあります。その場合は、TortoiseSVN注釈履歴... コマンドでできます。また annotate コマンドも役に立つので、時々参照されています。

このコマンドは、ファイルの行ごとに作業者と変更されたリビジョンを表示します。

ファイルの注釈履歴

図4.61 注釈履歴ダイアログ

注釈履歴ダイアログ


ずっと前のリビジョンに興味がなければ、注釈を見始めるリビジョンを設定できます。リビジョンの注釈履歴を見るのなら、これを 1 に設定してください。

デフォルトでは、 TortoiseBlame を使用して注釈を見ます。これは、異なるリビジョンを色分けして、見やすくしてくれます。注釈を印刷したり編集したりしたければ、 注釈履歴を見るためにテキストビューアーを用いる を選択してください。

改行コードや空白の変更に対する扱い方を指定できます。このオプションについては 「改行コードと空白のオプション」 で説明しています。デフォルトの振る舞いは、空白や改行コードの差異も実際の変更としますが、インデントの変更を無視してオリジナルの作者を見たい場合は、ここで適切なオプションを選択できます。

このオプションには、サーバーから取得するためかなり時間がかかる可能性はありますが、必要に応じてマージ情報を含めることができます。行が別のソースからマージされると、注釈履歴情報は、変更が元のソースだけでなく、それがこのファイルにマージされたリビジョンで作成されたリビジョンを表示します。

OKを押すと、TortoiseSVNは注釈ファイルを作成するため、データの取得を始めます。注釈処理が終了すると、結果を一時ファイルに書き出し、結果を表示します。

図4.62 TortoiseBlame

TortoiseBlame


TortoiseSVN に含まれる TortoiseBlame は、注釈ファイルを読みやすくしてくれます。マウスをある行の注釈情報列の上に持っていくと、同じリビジョンの行の背景を濃くして表示します。同じ更新者が行ったけれどもリビジョンが異なる行は、薄く色を付けて表示します。ディスプレイが 256 色モードに設定されていると、きれいに色分けされない可能性があります。

行の上で 左クリック すると、同じリビジョンのすべての行に色分けされます。同じ作業者の、他のリビジョンの行は薄い色で色分けされます。この色分けは貼り付いて、色分けを失わないようにマウスを移動できます。リビジョンをもう一度クリックすると、色分けが解除されます。

注釈情報の列の上ならどこでもマウスを持ってくると、ヒントボックスの中にリビジョンのコメント(ログメッセージ)を表示します。そのリビジョンのログメッセージをコピーするには、注釈情報の列を右クリックしてでてくるコンテキストメニューを使用してください。

注釈レポートを 編集検索... を使用して検索できます。これでリビジョン番号、作業者、ファイルの内容を検索できます。ログメッセージは検索できません。ログダイアログを使用して検索してください。

また、編集指定した行へ移動... で指定した行番号にジャンプします。

注釈情報列の上にマウスを持っていくと、リビジョンを比較したり、履歴を検査するのに便利なコンテキストメニューが使用可能になります。この時マウスのある行のリビジョン番号を参照します。コンテキストメニュー前リビジョンの注釈履歴 では、同じファイルに対する前のリビジョンを上限とした注釈履歴レポートを生成します。今見ている行に対する最終更新の、直前のファイルの状態を表す注釈履歴レポートを得られます。コンテキストメニュー変更を表示 は、参照しているリビジョンの変更点を表示する diff ビューアーを起動します。コンテキストメニューログを表示は、参照しているリビジョンから始まる、リビジョンログダイアログを表示します。

もっと視覚的に変更点の新旧を見たい場合、表示各行の変更時期を色分けする を選択してください。これにより、新しい行は赤、古い行は青のグラデーションで表します。デフォルトの色分けは、薄い色になっていますが、TortoiseBlame の設定で変更できます。

注釈履歴の起動時にマージ追跡を使用していると、マージされた行が若干異なって表示されます。別のパスからのマージによって変更された行には、マージが行われたリビジョンではなく、マージ元のファイルが最後に変更された時のリビジョンと作者が表示されます。この場合、リビジョンと作者が斜体で表示されます。注釈情報列の上にマウスを移動させると、マージされたリビジョンがツールチップ上に表示されます。マージした行をこのような形で表示させたくない場合、注釈履歴を起動するときに マージ情報を含める チェックボックスをオフにしてください。

表示マージ元のパス を選択すると、マージに関係するパスが表示されます。その行がマージ以外の操作によって最後に変更されたときのパスが表示されます。

注釈履歴情報の中のリビジョンは、その行の内容が変更された最後のリビジョンを表します。ファイルを他からコピーして作成したとき、それから行を変更するまで、その行の注釈履歴のリビジョンは元のソースファイルの最後の変更であり、コピーが作成されたリビジョンではありません。これはマージ情報と共に表示されるパスにも適用されます。パスは、最後の変更がその行に作成されたリポジトリの場所を示しています。

TortoiseBlame の設定は、TortoiseSVN設定... の TortoiseBlame タブでアクセスできます。 「TortoiseBlame の設定」 をご覧ください。

注釈履歴の差分

注釈履歴レポートの限界の1つは、ファイルを特定のリビジョンにおける、各行を変更した最後の人しか見ることができません。時には、誰が変更したかと同様に、誰が作成したかを知りたいことがあります。 TortoiseBlame の行を右クリックしてコンテキストメニューを表示しすると、そのリビジョンでの変更を見ることができます。しかし、変更点と注釈履歴を 同時に 確認したい場合は、差分と注釈履歴のレポートを組み合わせなければなりません。

リビジョンログダイアログには、以下のようないくつかのオプションがあります。

リビジョンの注釈履歴

上の欄でリビジョンを2つ選択し、コンテキストメニューリビジョンの注釈履歴を選択してください。これにより、この2つのリビジョンの注釈履歴を取得し、差分ビューアーで注釈を比較できます。

変更の注釈履歴

上の欄でリビジョン1つ選択し、下の欄でファイルを選択したうえで、コンテキストメニュー変更の注釈履歴 を実行してください。選択したリビジョンのとその前のリビジョンの注釈データを取得し、差分ビューアーで注釈を比較できます。

作業ベースとの比較と注釈

画面上部のリビジョンをひとつ選択し、コンテキストメニュー作業ベースと比較/注釈履歴を選択すると、そのファイルのログを表示します。選択したリビジョンと作業ベースにあるファイルの注釈データを取得し、差分ビューアーで注釈を比較します。