マニュアル

削除、移動、名前の変更

Subversion では、ファイルとフォルダの名前変更と移動が可能です。そのため、TortoiseSVN サブメニューには削除と名前変更のメニュー項目があります。

図4.34 バージョン管理されたファイルのエクスプローラーコンテキストメニュー

Explorer context menu for versioned files


ファイルとフォルダの削除

TortoiseSVN削除 を使用して、Subversion からファイルまたはフォルダを削除します。

TortoiseSVN削除 でファイルまたはフォルダを削除すると、それは作業コピーから即座に削除されるとともに、次回のコミット時にリポジトリで削除対象としてマークされます。そのアイテムの親フォルダには、変更済みアイコンオーバーレイが表示されます。変更をコミットするまでは、親フォルダで TortoiseSVN元に戻す を使用して、ファイルを元に戻すことができます。

リポジトリからアイテムを削除したいが、ローカルにはバージョン管理されていないファイル/フォルダとして保持したい場合は、拡張コンテキストメニュー削除 (ローカル保持) を使用します。拡張コンテキストメニューにこれを表示するには、エクスプローラーリストペイン (右ペイン) 内のアイテムを右クリックしながら Shift キーを押す必要があります。

TortoiseSVN コンテキストメニューを使用せずにエクスプローラー経由でアイテムが削除された場合、コミットダイアログにはそれらのアイテムが「不足」として表示され、コミット前にバージョン管理からも削除できます。ただし、作業コピーを更新すると、Subversion は不足しているアイテムを検出し、リポジトリからの最新バージョンで置き換えます。バージョン管理されたファイルを削除する必要がある場合は、常に TortoiseSVN削除 を使用してください。そうすることで、Subversion がユーザーが本当に何をしたいのか推測する必要がなくなります。

削除されたファイルまたはフォルダを復元する

ファイルまたはフォルダを削除し、その削除操作をすでにリポジトリにコミットした場合、通常の TortoiseSVN元に戻す ではもう元に戻すことはできません。しかし、ファイルまたはフォルダはまったく失われていません。ファイルまたはフォルダが削除されたリビジョンがわかっている場合 (わからない場合は、ログダイアログを使用して見つけてください)、リポジトリブラウザを開き、そのリビジョンに切り替えます。次に、削除したファイルまたはフォルダを選択し、右クリックして コンテキストメニューコピー先... を選択します。コピー操作のターゲットとして、作業コピーへのパスを選択します。

ファイルとフォルダの移動

ファイルまたはフォルダの単純なインプレースの名前変更を実行したい場合は、コンテキストメニュー名前の変更... を使用します。アイテムの新しい名前を入力すれば完了です。

作業コピー内でファイル (おそらく異なるサブフォルダへ) を移動したい場合は、右マウスドラッグアンドドロップハンドラーを使用します。

  1. 移動したいファイルまたはディレクトリを選択します

  2. 右ドラッグして、作業コピー内の新しい場所にドラッグします

  3. 右マウスボタンを離します

  4. ポップアップメニューで コンテキストメニューバージョン管理されたファイルをここに SVN 移動 を選択します

親フォルダをコミットします

名前変更と移動は、削除に続いて追加として実行されるため、名前変更/移動されたファイルの親フォルダをコミットして、名前変更/移動の削除された部分がコミットダイアログに表示されるようにする必要があります。名前変更/移動の削除された部分をコミットしない場合、それはリポジトリに残され、同僚が更新すると、古いファイルは削除されません。つまり、同僚は古いコピーと新しいコピーの両方を持つことになります。

フォルダの名前変更をコミットしてから、フォルダ内のファイルを変更する必要があります。そうしないと、作業コピーが本当にめちゃくちゃになる可能性があります。

ファイルを移動またはコピーする別の方法は、Windows のコピー/切り取りコマンドを使用することです。コピーしたいファイルを選択し、右クリックしてエクスプローラーのコンテキストメニューから コンテキストメニューコピー を選択します。次に、ターゲットフォルダを参照し、右クリックして TortoiseSVN貼り付け を選択します。ファイルを移動する場合は、コンテキストメニューコピー の代わりに コンテキストメニュー切り取り を選択します。

リポジトリブラウザを使用してアイテムを移動することもできます。詳細については、「リポジトリブラウザ」のセクションを参照してください。

SVN 外部定義を移動しない

svn:externals を使用して作成されたフォルダに対して、TortoiseSVN の 移動 または 名前の変更 コマンドを使用しないでください。このアクションは、外部アイテムをその親リポジトリから削除し、おそらく他の多くの人を動揺させる可能性があります。外部定義フォルダを移動する必要がある場合は、通常のシェル移動を使用し、ソースと宛先の親フォルダの svn:externals プロパティを調整する必要があります。

ファイル名の大文字小文字の競合の処理

リポジトリにすでに同じ名前で大文字小文字のみが異なる 2 つのファイル (TEST.TXTtest.txt など) が含まれている場合、Windows クライアントで親ディレクトリを更新またはチェックアウトすることはできません。Subversion は大文字と小文字を区別するファイル名をサポートしていますが、Windows はそうではありません。

これは、2 人の人が別々の作業コピーから、たまたま同じ名前で大文字小文字が異なるファイルをコミットする場合に発生することがあります。また、Linux のような大文字と小文字を区別するファイルシステムを持つシステムからファイルがコミットされた場合にも発生する可能性があります。

その場合は、どちらを保持したいかを決定し、もう一方をリポジトリから削除 (または名前変更) する必要があります。

同じ名前の 2 つのファイルを防ぐ

次のサーバーフックスクリプトが利用可能です: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ これは、大文字小文字の競合を引き起こすチェックインを防ぎます。

ファイルの名前変更の修復

友好的な IDE は、リファクタリング作業の一部としてファイルの名前を変更することがありますが、もちろん Subversion には通知しません。変更をコミットしようとすると、Subversion は古いファイル名を「不足」として、新しいファイル名を「バージョン管理されていないファイル」として認識します。新しいファイル名をチェックインして追加することもできますが、Subversion はファイルが関連していることを認識しないため、履歴追跡が失われます。

より良い方法は、この変更が実際には名前変更であることを Subversion に通知することです。これは、コミット および 変更の確認 ダイアログ内で行うことができます。古い名前 (不足) と新しい名前 (バージョン管理されていない) の両方を選択し、コンテキストメニュー移動の修復 を使用して、2 つのファイルを名前変更としてペアにします。

バージョン管理されていないファイルの削除

通常、すべての生成されたファイルが Subversion で無視されるように無視リストを設定します。しかし、それらの無視されたアイテムをすべてクリアして、クリーンビルドを作成したい場合はどうでしょうか?通常、それは makefile で設定しますが、makefile をデバッグしたり、ビルドシステムを変更したりする場合は、整理する方法があると便利です。

TortoiseSVN は、拡張コンテキストメニューバージョン管理されていないアイテムを削除... を使用して、まさにそのようなオプションを提供します。拡張コンテキストメニューにこれを表示するには、エクスプローラーリストペイン (右ペイン) 内のフォルダを右クリックしながら Shift キーを押す必要があります。これにより、作業コピー内のどこにでもあるすべてのバージョン管理されていないファイルがリストされたダイアログが表示されます。次に、削除するアイテムを選択または選択解除できます。

そのようなアイテムが削除されると、ごみ箱が使用されるため、ここで間違いを犯してバージョン管理されるべきファイルを削除した場合でも、復元できます。

TortoiseSVN ホームページ