Next: ロックでの基本的なバージョンコントロール, Up: バージョンコントロール下での基本的な編集 [Contents][Index]
マージベースの現代的なバージョンコントロールシステム(GitやHgのようなVCS; バージョンコントロールにおけるマージベースとロックベースを参照)では、バージョンコントロールされたファイルをvisitしているバッファー、あるいはVC DirectoryバッファーやDiredバッファーから呼び出されるとC-x v vは以下のことを行います:
現代的な分散型バージョンコントロールシステム(Git、Mercurial等)での変更のコミットはローカルに行われます、アップストリームのレポジトリ(通常はリモートホスト上にある)に自動的に伝播されることはありません。このような場合には、あなたが最後に更新してからレポジトリが変更されていると、コミットが失敗するかもしれません。その場合にはまずアップストリームから更新を取得して、もう一度試行しなければなりません。これを行うにはC-x v + (ブランチへ/からの変更のpull/push)、あるいはC-x v m (ブランチのマージ)を使用してください。
集中型バージョンコントロールシステムではアップストリームの変更によってコミットが失敗すると、もう一度C-x v vとタイプすることによってアップストリームのレポジトリの変更をマージします。
これらのルールは、変更はレポジトリから自動的にマージされない点をのぞき、RCSを非ロックモードで使用している場合も適用されます。あなたがファイルの編集を始めた後に、他のユーザーが同じファイルをコミットした場合、何の情報も与えられません。あなたのリビジョンをコミットしたとき、他のユーザーの変更は失われます(しかし、それはレポジトリには残るので、決定的に失われるわけではありません)。したがって、変更をコミットする前に、カレントリビジョンが変更されていないことを調べなければなりません。それに加えて、このモードでもRCSでロックすることが可能です。変更されていないファイルでのC-x v vは、RCSの通常のロックモードのようにそのファイルをロックします。(ロックでの基本的なバージョンコントロールを参照してください)。
DiffモードのバッファーからC-x v vを呼び出すと、このコマンドはそのバッファーに1つ以上のファイルにたいするpatchセットがあるとみなします。そして変更をそれぞれのファイルに適用して、適切なコミットログメッセージをタイプできるように*vc-log*バッファーをポップアップした後にそれらの変更をコミットします。