[ITPASS2011]HikiのCGIを介さずCVSツールから編集2

概要

ここではユーザ側の作業を記す.

CGI を介さずに, CVS ツールからページを編集するためにユーザが必要な作業を記す. なお, 以下の作業を行う前に, 管理側において [ITPASS2011]HikiのCGIを介さずCVSツールから編集1 が行われている必要がある.

HikiのCGIを介さずCVSツールから編集2

グループ www-data への追加

CVS ユーティリティから直接ページを編集する場合, そのユーザは www-data グループに入っている必要がある.

この作業は管理者権限で行うこと.

Debian では以下のコマンドでユーザ (ここでは hogehoge さん) を www-data グループに追加できる. なお, この設定を有効にするには一度ログアウトし, 再度ログインする必要がある.

# adduser hogehoge www-data

なお, グループから削除する際には以下の deluser コマンドを使用する.

# deluser hogehoge www-data

パスワードファイルの用意

ページの編集にユーザ認証が必要な場合, ~/.hiki-cvs-passwd にパスワードファイルを用意する.

$ vi ~/.hiki-cvs-passwd

ファイルには, 以下のようにユーザ名とパスワードを一行だけ書き込むこと.

name=xxxxxxx&password=XXXXXXXX

xxxxxxxx にはユーザ認証時のユーザ名を, XXXXXXXX にはパスワードを書き込んでおくこと. 空白などは含まないこと.

ファイル作成後, パーミッションを設定すること.

$ chmod 600 ~/.hiki-cvs-passwd

cvsroot のチェックアウト

/home/itpass/hiki/cvsroot の hiki モジュールをチェックアウトする.

ローカルでチェックアウトする場合は, 以下のようにすると良い.

$ cvs -d /home/itpass/hiki/cvsroot/ checkout hiki

リモートからチェックアウト (ssh でアクセス) する場合には, 以下のようにすることでチェックアウトできる. 以下は, CVS リポジトリがホスト itpass.scitec.kobe-u.ac.jp 上にある場合の例である.

$ export CVS_RSH=ssh
$ cvs -d :ext:epa.scitec.kobe-u.ac.jp:/home/itpass/hiki/cvsroot checkout hiki

編集やコミット

作成された CVS の作業用コピー内で編集とコミットを行うことで, リポジトリ内のファイルの更新と, Hiki 内のデータベースの更新が行われる. 次項の「編集時の注意点」を読んだ後, 実際に編集を行って試してみよ.

cvs コマンドの基本操作などは 地球流体電脳倶楽部 -- CVS に関するメモ など, Web 上の情報や CVS に関する書籍などを参照せよ.

編集時の注意点

  • コミットメッセージにはユーザ名を入力

    CVS では, コミットを行う際にはそのコミットに関するメッセージを入力できる. 空でもコミットは可能だが, 原則として 自身のユーザ名を入力する ようにせよ. cvs コマンドでコミットする場合, 以下のようにすると良い.

    $ cvs commit -m 'username' hogehoge
                     ^^^^^^^^  ^^^^^^^^ コミットするファイル
              自身のユーザ名

    理由は, 「誰がコミットしたか」を Web ページの「編集履歴」 から参照できるようにするためである. CGI は, ユーザ認証の際のユーザ名を用い, コミットメッセージとして登録する. CVS ユーティリティを利用する場合もそれに合わせるようにすること.

  • 新規作成できない

    CVS ユーティリティからファイルの新規作成はできない. 理由は新規作成されるファイルの所有者が www-data ではなく, そのユーザのものになり, タイムスタンプの設定時にエラーが生じるためである.

    [ITPASS2011]HikiのCGIを介さずCVSツールから編集1 の設定が正しく行われていれば, ファイルを作成しようとするとエラーが返るはずである.

  • ファイルの前後に不要な空行を入れない

    ファイルの頭や末尾に不要な空行が入っていてはならない. CGI からの編集時は自動的にファイルの頭や末尾の余計な空行は削除されてコミットされる. CVS ユーティリティから直接コミットする場合にはユーザがその作業を行う必要がある.

    [ITPASS2011]HikiのCGIを介さずCVSツールから編集1 の設定が正しく行われていれば, 余計な空行があるファイルをコミットしようとするとエラーが返るはずである.

  • ファイルの末尾には改行が入っていなければならない

    上記と同様な理由で, ファイルの末尾に改行が必要である.

    この場合も, [ITPASS2011]HikiのCGIを介さずCVSツールから編集1 の設定が正しく行われていれば, ファイル末尾に改行が無い場合にエラーが返るはずである.

URI エスケープされたファイル名の変換

Hiki ではタイトルが日本語のページに関しては, その文字列を URI エスケープしたものをファイル名とする. 例えば, 「ほげほげ」というタイトルのページは "%A4%DB%A4%B2%A4%DB%A4%B2%0A" というファイル名に保存されている.

従って, CVS ユーティリティを使用し, 直接ファイルを編集する際には ファイル名からは, どのファイルがどのページなのが分からない ことになる.

これでは不便なため, ファイルの実体に対し, 日本語のシンボリックを作成し ておくと良い. unescape_symlink.rb はカレントディレクトリ内の URI エスケープされたファイル名に対し, 日本語名のシンボリックを作成するスクリプトである. 作業用コピー内で以下のように使用すると良い. なお, このスクリプトの使用には Ruby が必要である.

$ ruby unescape_symlink.rb

しかし, 当然ながらコミットする際には実体の URI エスケープされた名前を持つファイルをコミットしなければならないので注意せよ.