ファイル管理の仕組み
チェックアウトした直後の状況
すべてのユーザーは作業を始めるときに「チェックアウト」を行います (チェックアウトのやり方についてはチーム管理機能の利用ページをご覧ください)。 チェックアウトとは、サーバが持っているファイルを、作業者のPC上にダウンロードしてくる作業です。 チェックアウトを行うと下の図が示すような状態になります。
この図が示すように、チームには複数のユーザーが存在します。 この解説ではTranslator AとTranslator Bが作業を進めていくとどのようなことが起こりえるかを ケースバイケースで解説します。
同一ファイルに対して同時に作業が発生しなかった場合
同じファイルが同時に編集されなかった場合は、もっとも単純で分かりやすい状態です。
まずは、この状態について解説します。
チェックアウト処理を行ったあと、Translator Bがファイルを編集したとします。その結果、サーバのものとは内容が異なりました。
Translator Bは自分の作業が終わったので自分の編集したファイルの内容をサーバにコミットします。 (コミットとは自分の編集内容をサーバにアップロードする処理のことです。 コミットのやり方についてはチーム機能の基本操作をご覧ください。) この結果、サーバにはTranslator Bが編集した新しいファイルが最新版としておかれることになります。 このとき、Translator Aのファイルはサーバよりも古い状態といえます (ただし、Translator Aはサーバに新しいファイルがアップロードされていることを知ることは出来ません)。
Translator Aは、Translator Bが編集したファイルを編集することなく、 サーバに対してデータを更新することにしました。 (「更新」とはサーバに対して変更のあった部分だけ効率的にダウンロードしてくる処理です。 チェックアウトよりも高速に動作します。) このタイミングで、Translator Aも、Bが編集したファイルを手にすることになります。
この場合は何も問題なく作業が最後まで進みました。
同時に同じファイルを編集した場合
チェックアウトした直後、Translator AとBが同時に同じファイルでの作業を進めてしまいました。 Translator AとBが違う言語の担当者の場合はこのような状況も当然あり得ます。 二人が編集したファイルは、サーバの内容とはそれぞれが異なっています。
Translator Aは、先に作業が終了したのでデータをコミットすることにしました。 しかしBはまだ作業が終わっていません。
Translator Bがようやく編集作業が終わりました。 早速Bはデータをコミットしようとしますが、Translator Aが先にデータをアップロードしているので、 コミットはブロックされます(out-of-dateとエラー表示が出ます)。
Translator Bは、自分の作業内容をコミットする前に、データを取得しなければならないことに気づきます。 「チーム」メニューから「更新」を選択します (操作方法についてはチーム機能の基本操作をご覧ください。)
Translator Bはサーバからデータを取得します。 すると、Message Studioは、可能な限り自動的に作業内容をマージします。 たとえば、Translator AとTranslator Bはこのとき、違うセルを編集していたとします。 この場合、Message Studioは自動的にマージを行うことが出来ます。 Translator Bの手元には、最新版(Translator Aの作業内容)と共に、自分がチェックアウトしてから今までやってきた作業内容両方を持っていることになります。 まだこの段階ではサーバにはTranslator Bの作業内容は反映されていません。 Translator Bは、仕事をすでに終えていますので、サーバにデータをコミットします。
この結果、Translator Aの作業内容とTranslator Bの作業内容が両方ともサーバに入ったことになります。 Translator Aはこの段階ではサーバと内容が異なっていますが、Translator Aが「更新」を行えば、 このタイミングでTranslator Aのファイルも最新版となります。
同時編集の結果、競合が発生した場合
もしTranslator AとBが同時に作業を進めた結果、Message Studioが自動的にマージできなかった場合にどのようなことが起こるかを解説します。 たとえば、Translator AとBが同一のセルを編集してしまった場合などです。 この場合、先にコミットされたAのファイルを、Bが更新しようとしたときに、Bは競合が発生していることを知ります。
このケースでは、Translator Bは、Translator Aと自分が編集した内容を見比べた上で、どちらを採用するか判断するように求められます (詳しくは競合とマージをご覧ください)。 Translator Bが、自分のデスクの上でどちらを採用するかすべて決めることが出来れば、競合状態は解決されたことになります。 競合状態が解決された場合、プロジェクトエクスプローラから警告アイコンが消えます。
競合が解決された場合、Translator Bはサーバにデータをコミットできるようになります。
はじめに
言語設定
メッセージ編集
共通のバイナリフォーマット