しばらくEevrnoteを使っているのに、いまいち理解しないままでいたコンフリクト時の処理について確認した(コンフリクト=複数のEvernoteクライントで同一のファイルを更新)。
どこまでがクライアント側の処理かまで調べてないのでクライント依存のところもあるかも。Mac版クライアントでは以下のようになる。
ルール:
- サーバ上にあるノートが常に勝つ。
- データのマージは自動では行われない。
- 更新されたノートがサーバにある場合、それをダウンロードする前にアップロードはできない。
- 負けたノートはコンフリクト用のNotebookに移される。コンフリクト用のNotebookはコンフリクトする度に作成される。
例:
- 前提: ノートNが、サーバとクライアントAとクライアントBに存在する。
- クライアントA(例: iPhone)でノートNを編集。このノートを以下N-Aと呼ぶ。
- 同時に、クライアントB(例: Macbook)でノートNを編集。このノートを以下N-Bと呼ぶ。
- クライアントAから、EvernoteサーバへN-Aをアップロード(Sync)。
- その後、BでN-Aをダウンロード(Sync)。
- この時点でクライアントB上でノートN-BとN-Aのコンフリクトが発生。
- クライアントBのメインのNotebookにはN-Aが入る(N-Bは見えなくなる)。同時に、コンフリクト用のNotebookが作成され、そこN-Bは飛ばされる。
- 必要であれば、ユーザはN-AとN-Bを比較し、手でマージする。
SubversionとかGitに慣れていると、テキストなんだし、ある程度勝手にマージしてよ、とか少し思うけど、文章だとそううまくはいかないのかな。
コンフリクトしたときに作られるNotebook
記事の内容についての質問、苦情、間違いの指摘等なんでもtwitterでどうぞ。 Tweet