GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Log-Buffer.html ・ emacs-doc.conao3.com

30.1.4 ログエントリバッファの特徴

VCに変更をコミットするよう指示すると、*vc-log*という名前のバッファが表示されます。このバッファに、行った変更内容を説明するログエントリを記述してください(解決する問題の理解を参照)。あるいは、ChangeLogファイルやバッファからエントリを自動的に挿入することもでき(後述)、必要に応じて*vc-log*バッファでさらに編集することも可能です。作業が完了したら、C-c C-c (log-edit-done) と入力してバッファを終了し、ログエントリとともに変更をコミットしてください。

*vc-log* バッファには、バージョン管理システムに提供する追加情報を指定する ヘッダー行 を1つ以上記述することもできます。例えば、以下のヘッダー行は、今回の変更があなたではなく、別の開発者によって行われたことを示しています。

Author: J. R. Hacker <jrh@example.com>

各ヘッダー行は、バッファの最上部に1行分を占めなければなりません。ヘッダー行ではない最初の行が、ログエントリの開始位置として扱われます。‘Author’ ヘッダーに加え、ほとんどのバージョン管理システムでは、‘Summary’(チェンジセットの1行要約)および ‘Date’(手動で指定したコミット時刻)というヘッダーもサポートしています。Emacsはこれらに加え、いくつかのVCS固有のヘッダーも認識します。サポートされていないVCSに対してヘッダーを指定した場合、そのヘッダーはログエントリの一部として扱われます。

*vc-log* バッファのメジャーモードはログ編集モードであり、テキストモードの派生モードです(テキストモードを参照)。ログ編集モードに入ると、Emacs はフック text-mode-hook と vc-log-mode-hook を実行します(フックを参照)。さらに、*vc-log* バッファを設定するために、Emacs はフック log-edit-hook を実行し、これによりオプションでいくつかの便利な機能が利用可能になります。以下の段落では、これらの機能のうち、一般的に有用でデフォルトで有効になっている3つを含む、いくつかの機能について説明します。(機能の完全な一覧を確認し、いずれかの機能を有効または無効にするには、M-x customize-option RET log-edit-hook RET と入力してください。特定項目のカスタマイズを参照してください。)

関数 log-edit-insert-message-template は、‘Author’ と ‘Summary’ のヘッダーを含むデフォルトの *vc-log* バッファ設定を生成し、バッファのヘッダー部分とログエントリ部分を区切る太い線を表示します。log-edit-hook から log-edit-insert-message-template を削除すると、初期の *vc-log* バッファは単に空になります。2つのヘッダー行は初期状態では空です。変更の作成者であり、コミットメッセージに自身の名前とメールアドレスを使用するように VCS を設定している場合は、‘Author’ ヘッダーを空のままにしておくことができます。‘Summary’ ヘッダーを空のままにした場合、ほとんどのシステムではログエントリの1行目がサマリー行として使用されます(‘Summary’ ヘッダーを自動的に入力する方法については後述します)。

VCが*vc-log*バッファを表示すると、現在のVCファイルセット(つまり、C-c C-cと入力した際にコミットされるファイル)を一覧表示する*log-edit-files*という名前のバッファも、デフォルトで表示されます。log-edit-hookからコマンドlog-edit-show-filesを削除した場合、*log-edit-files*バッファは自動的には表示されませんが、C-c C-fと入力することでそのコマンドを呼び出すことができます。同様に、*log-edit-files*バッファをキルまたはベリーした場合、C-c C-fと入力することで再び表示されます。

VCファイルセットと、編集を開始したバージョンとの変更差分を表示するには(旧リビジョンの確認と比較を参照)、C-c C-d (log-edit-show-diff) と入力します。このコマンドは、差分を表示しているウィンドウも選択します。*vc-log* バッファがポップアップした際にVCが自動的に差分を表示するようにするには、log-edit-hook に log-edit-maybe-show-diff を追加します。C-c C-d とは異なり、この機能では差分を表示しているウィンドウは選択されません。

ChangeLogエントリの生成を支援するには、C-c C-w (log-edit-generate-changelog-from-diff) と入力してください。これにより、VCファイルセットの差分に基づき、変更されたすべてのファイル名と関数名を列挙したChangeLogのスケルトンエントリが生成されます。連続して空欄となったエントリは、M-q (fill-paragraph) によって統合されます。デフォルトでは、スケルトンには先頭のディレクトリを含まないファイル名のみが含まれます。VCルートまでの先頭ディレクトリを付加したい場合は、diff-add-log-use-relative-names をカスタマイズしてください。

現在のVCファイルセットのログエントリを、1つ以上のChangeLogファイルまたは一時的なChangeLogバッファ(変更ログを参照)に追加した場合、デフォルトではVCは*vc-log*バッファをポップアップする際に、これらのエントリを自動的に挿入します。log-edit-hookからコマンドlog-edit-insert-changelogを削除した場合、VCはログエントリを自動的に挿入しませんが、C-c C-aと入力することでこのコマンドを実行できます。同様に、このバッファの内容を削除または変更した後、やはりChangeLogエントリを使用したいと考えた場合は、C-c C-aと入力してバッファにこれらのエントリを再挿入してください。

該当するログエントリが1つ以上のChangeLogファイルにあり、各ファイルの最上位項目が現在の日付でユーザー名の下に作成されている場合、このコマンドはその項目(または複数の項目)の中からコミット対象のファイルに一致するエントリを検索し、それらを挿入します。プレフィックス引数(C-u C-c C-a)を指定してコマンドを実行するか、あるいは直ちに繰り返し実行(C-c C-a C-c C-a)した場合は、項目のユーザー名や日付に関わらず、最上位項目を検索します。

VCが、すべてのログエントリが同一のChangeLogファイルまたはバッファに由来することを検出した場合、コマンドは単にエントリの本文全体を*vc-log*バッファに挿入します。さらに、エントリの1行目が‘* ’(アスタリスクに続くスペース)で始まっていない場合、VCはそれをサマリー行とみなし、‘Summary’ヘッダーに移動します。最後に、ChangeLogエントリに記載されている1つ以上のファイルが現在のVCファイルセットに含まれていない場合、VCは変更をコミットする前にこの不一致を修正するよう促す警告を表示します。

CVSやRCSを使用している場合は、逆の手順――Log EditバッファからChangeLogエントリを生成する方法――について、Change Logs and VCを参照してください。

コミットを中止するには、そのバッファに C-c C-c と入力しないだけで構いません。バッファを切り替えて、他の編集を行うこともできます。別のコミットを試みない限り、編集していた内容は *vc-log* バッファに残ったままとなり、いつでもそのバッファに戻ってコミットを完了させることができます。

また、過去のログエントリの履歴を参照して、コミットコメントを複製することもできます。これは、類似したコメントで複数のコミットを行いたい場合に便利です。この操作に使用するコマンド M-n、M-p、M-s、M-r は、ミニバッファ外で使用される点を除けば、ミニバッファ履歴コマンド(ミニバッファ履歴 を参照)と同様に動作します。