====== 変更履歴 ======
変更履歴は、最近の変更キャッシュと、ページごとの変更履歴ファイルに書き込まれます。
最近の変更キャッシュは「''/data/meta/_dokuwiki.changes''」に保存され、日々整理されます。ページごとの変更履歴ファイルは「''/data/meta/<名前空間>/<ページ ID>.changes''」に保存されます。ページごとの変更履歴ファイルは整理されないため、そのページに対して行われた作成・編集・削除などの編集作業がすべて追跡できるようになっています。
===== 変更履歴ファイルの書式 =====
変更履歴は 1 行 1 エントリのプレーンテキストとして保存されます。変更履歴の各行は以下のようなタブ区切りのフィールドを含んでいます。
\t\t\t\t\t\t\n
= Unix タイムスタンプ
= IPv4 アドレスもしくは IPv6 アドレス
= ログ行タイプ (次のセクションで説明します)
= DokuWiki のページ ID
= DokuWiki のユーザー名 (ログイン中のみ)
= 編集の概要もしくは動作理由
= 任意のタイプのデータ用のフィールド
注意: タブ "\t" と改行 "\n" は含まないようにしてください。
===== ログ行タイプ =====
ログ行タイプは、任意の長さの文字列です。ただし、すべての 1 文字の文字列 (「C」や「E」など) は DokuWiki コアのために予約されています。2 文字以上の文字列は、実験的用途やユーザー定義のログ行タイプとして利用できます。なお、ログ行タイプは大文字小文字を区別します。ログ行タイプのマッチは PHP の比較演算子 ''==='' で行われますので注意してください。
==== DokuWiki コアで利用するログ行タイプ ====
以下に、DokuWiki コアで利用するログ行タイプ ('''' 値) を示します。
^ '''' 値 ^ 意味 ^ 備考 ^
| C | 作成 (Create) | |
| E | 編集 (Edit) | |
| e | 小変更 (Minor edit) | 小変更は、ログイン中のユーザーのみ利用できます。 |
| D | 削除 (Delete) | ページを削除しても、変更履歴と以前のバージョンは保たれます。 |
| R | 復元 (Revert) | 以前のバージョンから編集した場合に利用されます ('''' フィールドにも追記されます)。 |
===== ページごとの変更履歴ファイルの保管 =====
「''/data/meta''」ディレクトリは**削除しないでください。**ここに保存されている変更履歴データは他の Wiki データからは作成できません。
===== 最近の変更キャッシュの再作成 =====
もしうっかり「''/data/meta/_dokuwiki.changes''」ファイルを削除してしまった場合は、[[:ja:tips:recreate_wiki_change_log|最近の変更のキャッシュを再作成する]]をご覧ください。
===== 旧バージョンの DokuWiki からの変更履歴のインポート =====
^ :!: 以下の情報は、あなたが 2006-11-06 以前のバージョンの DokuWiki からアップグレードする場合にのみ影響する情報です。 :!: ^
旧バージョンの変更履歴ファイルが存在する場合は、自動的にインポートされます。
**注**: セーフモードで動作している PHP 上で非常に大規模な Wiki を動作させている場合は、スクリプトが実行可能な時間を延長することができないため、インポート作業中にタイムアウトが発生してしまう可能性があります。もし必要であれば、セーフモード動作ではない PHP が動作している他のサーバでインポート作業を行うことができます。インポート作業を行った後の「''/data/meta''」ディレクトリは、セーフモードで動作しているサーバにそのままコピーしても大丈夫です。
**注**: 更新ペースの非常に遅い Wiki では、「最近の変更」ページを埋めるために、''$conf['recent_days']'' の設定値をより適切な値に変更するとよいでしょう (デフォルト値は 7 日間です)。
大量の変更履歴のインポートでは、通常の PHP の制限である 8MB 以上のメモリが必要となる場合があります。もしインポートに失敗する場合は、Web サーバのエラーログファイルに "Fatal error: Allowed memory size of 8388608 bytes exhausted" のような PHP エラーが出力されていないかを調査してください。もしこのようなエラーが出力されていた場合は、Web サーバの php.ini ファイルを編集して一時的に PHP のメモリ制限を緩和させてから Web サーバを再起動し、再びインポートを試みてください。
==== インポート作業の完了確認 ====
URL に直接指定することで実行できる「do=check」アクションは、チェックの一環として、旧バージョンの変更履歴が存在しているかどうか、インポートが作業中なのか完了しているのかを確認し、報告します。もしインポート作業が途中で停止してしまった場合、「do=check」はインポートが完了していないという警告を出力します。この場合は、「''/data/meta/_dokuwiki.changes''」ファイルと「''/data/meta/_dokuwiki.changes_*''」ファイルを削除して再びインポート作業を行ってみてください。
変更履歴が問題なくインポートできた後でも、「do=check」は旧バージョンの変更履歴が存在することを報告します。これは意図的に出力しているものですので、問題はありません。しかし、もし「do=check」が毎回 "Importoldchangelog plugin not disabled after import" という警告を出力する場合は、[[:ja:plugin:plugin|プラグイン管理]]で importoldchangelog プラグインを無効にしてください。