他人の修正に伴う作業コピーの更新

図4.11 更新が完了したときの進行ダイアログ

更新が完了したときの進行ダイアログ


定期的に、手元の作業コピーに他の人が行った変更を、確実に取り込まなくてはなりません。サーバから手元のコピーへ変更を取り込む手順を、更新 と言います。更新はひとつのファイルに対して行われることも、選択したファイルに対して行われることも、ディレクトリ構造に対して再帰的に行われることもあり得ます。更新するには、ファイルやディレクトリを選択し、右クリック で表示されるエクスプローラのコンテキストメニューから TortoiseSVN更新 を選んでください。更新の進行を表すウィンドウがポップアップし、更新を始めます。他の人が行った変更が、あなたのファイルにマージされますが、あなたが行った変更は保持されています。更新では、リポジトリは影響を受けません

進行ダイアログは更新の内容を色分けして目立つようにしています。

作業コピーに追加した新規項目

暗赤色

作業コピーから削除された余計な項目と作業コピーに置き換えた紛失項目

リポジトリからの変更を手元の変更とうまくマージしました。

明赤色

リポジトリからの更新を手元の更新とマージしたら、競合が発生したので解消しなければなりません。

作業コピー内の変更のない項目をリポジトリの新しいバージョンに更新しました。

これはデフォルトの色設定ですが、設定ダイアログで色をカスタマイズできます。詳細は 「TortoiseSVN での色設定」 をご覧ください。

更新中に 競合 (同時に同じファイルの同じ行を変更して、それが一致しなかった場合に起きる) が発生したら、ダイアログでは競合を赤で表します。その行を ダブルクリック して、競合を解消するよう外部マージツールを起動できます。

更新が完了すると、項目の更新・追加・削除・競合などの概略を進行ダイアログに表示します。概略情報は Ctrl+C でクリップボードにコピーできます。

標準の更新コマンドでは、オプションを付けず、作業コピーをリポジトリの最新 (HEAD) リビジョンに更新するだけです。これが最も一般的なケースです。更新プロセスをもっと制御したい場合は、代わりに TortoiseSVN特定のリビジョンへ更新... を使用してください。これで作業コピーを最新のものだけでなく、指定したリビジョンに更新できます。作業コピーがリビジョン 100 だったとして、リビジョン 50 にある状態を反映したい場合、単純にリビジョン 50 へ更新します。同じダイアログで、現在のフォルダを更新する際の 深度 を選択できます。これは 「チェックアウトの深度」 で説明しています。デフォルト値は、既存の深さを変更しないように、作業コピー 戸なっています。また、更新時に外部プロジェクト (svn:externals で関連づけたプロジェクト) を無視して更新できます。

注意

リビジョンを指定してファイルやフォルダを更新した場合、そのファイルを変更するべきではありません。これをコミットしようとすると、out of date エラーが発生します! ファイルへの変更を取り消し、以前のリビジョンから新しくはじめたい場合、リビジョンログダイアログから以前のリビジョンにロールバックしてください。詳しい方法や代替案については、「リポジトリのリビジョンのロールバック (取り消し)」 をご覧ください。

特定のリビジョンへ更新 は、履歴中の以前のポイントではどうだったかを見るのに時々は便利です。ですが一般的に、個々のファイルを以前のリビジョンに更新するのは、作業コピーを矛盾した状態にしたままにしかねないので、よい考えとは言えません。更新したファイルの名前を変更すると、作業コピーからそのファイルが消えてしまい、見つからなくなる可能性があります。以前のリビジョンにはそんな名前のファイルは存在しないからです。更新によって現れたファイルとの区別が付かないため、通常の、緑のオーバーレイの付いた項目にも注意を払うべきです。

単にそのファイルの古いリビジョンを手元のコピーに欲しければ、ログダイアログで選んだファイルに対して、コンテキストメニューリビジョンを保存... コマンドを使用する方がよいでしょう。

複数のファイル・フォルダ

エクスプローラで複数のファイルやフォルダを選択し、更新 を選択した場合、そのファイルやフォルダをひとつずつ更新していきます。TortoiseSVN は同じリポジトリから持ってきたファイルやフォルダは、全く同じリビジョンに確実に更新します! この更新中に他の人からのコミットが発生してもです。

既存のローカルファイル

更新していると時々、手元に同じ名前のファイルがあるというメッセージを出して、更新が失敗することがあります。典型的には、Subversion で新しいバージョンのファイルを取得したときに、すでに作業フォルダにバージョン管理外の同じ名前のファイルがある場合に発生します。Subversion がバージョン管理外のファイルを上書きすることはありません。偶然他の開発者が同じファイル名で作成し、コミットしてしまった場合など、あなたの作業した内容が何か含まれているかもしれないからです。

このエラーメッセージがでた場合、簡単な解決法は手元にあるバージョン管理外のファイル名を変更することです。名前を変更したファイルがまだ必要かどうかチェックもできます。

このエラーメッセージがまだ出続ける場合、問題のファイルの一覧を出す代わりに TortoiseSVN変更をチェック をしてみてください。この方法で、一気にその問題に対処できます。