IT pass HikiWiki - [ITPASS2009]HikiのCGIを介さずCVSツールから編集2 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<ITPASSサーバ構築ドキュメント>)) へ戻る]

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

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

== グループ 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 に関するメモ|URL:http://www.gfd-dennou.org/library/cc-env/cvs/>))
など, Web 上の情報や CVS に関する書籍などを参照せよ.


== 編集時の注意点

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

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

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

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


* 新規作成できない

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

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


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

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

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


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

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

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


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

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

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

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

  $ ruby unescape_symlink.rb

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

[((<ITPASSサーバ構築ドキュメント>)) へ戻る]