﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
316	リリース管理機能の追加（チェックイン・チェックアウト）	yasunaka		"crossnoteを顧客と一緒に利用するシーンにおいて、作成途上のドキュメント類は顧客には開示せず、リリース操作をもって顧客側に開示するためのリリース管理機能を追加します。

** リリース管理機能とは

(1) リリースプロジェクトとワーキング・コピープロジェクトの2つのプロジェクトを用意。リリースプロジェクトは顧客と共有するためのプロジェクト。ワーキング・コピープロジェクトは作成途上の状態のドキュメントを置くプロジェクト。

(2) リリースプロジェクトとワーキング・コピーで、内容的には同一のドキュメントを持つ。どちらかが編集できる状態の場合、もう片方は編集できない状態となる。リリース状態とは、リリースプロジェクト側が編集権を持ち、リリース解除状態ではワーキング・コピー側が編集権を持つ。

(3) リリース、およびリリース解除はドキュメント毎に行う。

(4) リリース時にはワーキング・コピー側ドキュメントの修正分をリリース側に反映させる。同じくリリース解除時にはリリース側の修正分をワーキング・コピー側に反映させる。

(5) リリース側（顧客側）が付けたコメントはリリース解除時にワーキング・コピー側にコピーする。ワーキングコピー側のコメントは基本的にはリリース側には持っていかないが、リリース側が付けたコメントへの返信はリリース側にコピーする。

(6) crossnoteドキュメントのリンクはリリース時にリリース側に相当するドキュメントが既に存在していれば、そこへのリンクに置き換えられる。

(7) 参照コピー、派生コピーなどについても同様に、リリース時にリリース側に参照・派生のソースが存在している場合、それを親とする参照コピー・派生コピーに置き換えられる。

(8) ドキュメント構成ファイルについても同様に、リリース時にリンク先の付け替えを行う。

** 以上のような基本方針の下、以下のような修正を行っています。

* Admintoolにリリース時のステータス設定のユーザーインターフェースを追加し、以下の事項を設定できるようにする
{{{
リリース実行後のワーキングコピー側ステータス(変更不可)およびリリース先プロジェクト側ステータスの選択
リリース解除時のリリース先プロジェクト側の対象ステータス(変更不可)の選択
リリース解除実行後のワーキングコピー側ステータスの選択
}}}

* crossnoteクライアントのプロジェクト・プロパティにリリース管理設定に関する項目を追加
{{{
リリースプロジェクトの選択
コメント取り込み時のコメントのカテゴリの選択
}}}

* crossnoteクライアントのワークスペースのコンテキスト・メニューにリリースおよびリリース解除のメニューを追加

* リリース時の動作
{{{
ワーキング・コピー上のドキュメントを変更不可のステータスに変更。
新規の場合、リリース先に同じフォルダ構成でドキュメントをコピー
既存の場合、ワーキング・コピー側の修正内容をリリース側に反映
ワーキング・コピー側のドキュメントにはキーワードRELEASED_FILEを設定し、リリース側を指し示すようにする。
リリース側のドキュメントのKEY_DOCUMENT_INFOにRELEASED_FILEを設定する。
crossnoteドキュメントの場合、ワーキング・コピー側とリリース側の部品間のマッピング情報を作成し、保持する。
コメントはリリースプロジェクト側で作成されたコメントに対する返信のみを反映する。
上記の変更結果をワーキングコピーおよびリリース側双方でコミット。
}}}

* リリース解除時の動作
{{{
ワーキング・コピープロジェクト側の対象ファイルを変更可のステータスへ変更する
リリースプロジェクト側のドキュメントの変更内容およびコメントを取り込み、ワーキングコピー側のドキュメントにマージする。
}}}
"	enhancement	closed	major	ver 1.8.2	crossnote	ver 1.8.2	fixed	#6146	
