Ubuntu Weekly Recipe

第117回 UbuntuとEmacsでプログラミングをはじめよう(中編)

この記事を読むのに必要な時間:およそ 2.5 分

psvnを使う

バージョン管理にSubversionを使っているのならば,subversionパッケージに含まれるpsvnを使うという方法もあります。前述のVCは,ファイル単位で操作を行いましたが,psvnを使えばファイルのリストから複数のファイルの追加,コミット処理などをまとめて行うことが可能です。

subversionパッケージがインストールされていれば,使い始めるにあたって特に設定は必要ありません。Emacs上でM-x svn-statusを実行すると,対象とするディレクトリを訊いてきますので,ミニバッファにパスを入力してください。ディレクトリ内のファイル一覧と,現在のステータスが表示されます。

コミットしたいファイルにカーソルをあわせて"c"キーを押すと,コミットログを入力するバッファが開きます。ここでログを入力してC-c C-cでコミットを行うことが可能です。複数のファイルをコミットしたい場合は,"m"キーでコミットしたいファイルにマークをつけてから,コミット操作を行ってください。ファイルを追加したい場合は"a"でマーク,削除したい場合は"D"を使います。他にも"="でdiff,"U"でアップデートが行えます。

詳細なコマンドの説明は,/usr/share/emacs/site-lisp/psvn.el内に記述されていますので,参考にしてください。

図3 psvnで複数のファイルをコミットしてみた

図3 psvnで複数のファイルをコミットしてみた

ふたつのファイルをマージする

あるファイルについて,微妙に内容が異なる二つのバージョンができてしまうということがあります注2⁠。

これがバージョン管理下にあるファイルならば,差分のマージはツールが機械的に行うことが可能です。しかし場合によっては,バージョン管理下にない別のファイルから差分を抽出してマージしなければならないことがあるかもしれません。

そんな際に便利なのが,ediff-mergeモードです。

注2
もちろん,こういう事態におちいることそのものが間違いではあるのですが……。

M-x ediff-mergeを実行すると,マージ元になる二つのファイルを訊いてきますので,ミニバッファにファイル名を入力しましょう。すると,ウィンドウが三分割され,上半分の左右にマージ元のファイルが下半分にマージ後の状態が表示されます注3⁠。

n/pキーで差違のある箇所を前後に移動することが可能で,ここでaまたはbを入力すると,マージ後のバッファにVariant A/Variant Bそれぞれの内容が反映されます。またこの反映は"r"で取り消すことも可能です。

すべての箇所でマージ作業が完了したら,"q"でediff-mergeモードを抜けることができます。その後はマージ結果が*ediff-merge*バッファとして残っていますので,通常通り保存を行うだけです。

図4 ediff-mergeモード。マージ元になる二つのファイルとマージ後のバージョンが表示され,選択しながらマージを行える

図4 ediff-mergeモード。マージ元になる二つのファイルとマージ後のバージョンが表示され,選択しながらマージを行える

注3
左に表示されているバッファをVariant A,右に表示されているバッファをVariant Bとして扱います。

来週は,Emacsでのプログラミングに役立つ,便利な拡張機能を紹介します。お楽しみに。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。最近レンズ沼にハマる。