Subversion では、ファイルとフォルダの名前変更と移動が可能です。そのため、TortoiseSVN サブメニューには削除と名前変更のメニュー項目があります。
→ を使用して、Subversion からファイルまたはフォルダを削除します。
“変更済み”アイコンオーバーレイが表示されます。変更をコミットするまでは、親フォルダで → を使用して、ファイルを元に戻すことができます。
→ でファイルまたはフォルダを削除すると、それは作業コピーから即座に削除されるとともに、次回のコミット時にリポジトリで削除対象としてマークされます。そのアイテムの親フォルダには、リポジトリからアイテムを削除したいが、ローカルにはバージョン管理されていないファイル/フォルダとして保持したい場合は、Shift キーを押す必要があります。
→ を使用します。拡張コンテキストメニューにこれを表示するには、エクスプローラーリストペイン (右ペイン) 内のアイテムを右クリックしながらTortoiseSVN コンテキストメニューを使用せずにエクスプローラー経由でアイテムが削除された場合、コミットダイアログにはそれらのアイテムが「不足」として表示され、コミット前にバージョン管理からも削除できます。ただし、作業コピーを更新すると、Subversion は不足しているアイテムを検出し、リポジトリからの最新バージョンで置き換えます。バージョン管理されたファイルを削除する必要がある場合は、常に
→ を使用してください。そうすることで、Subversion がユーザーが本当に何をしたいのか推測する必要がなくなります。ファイルまたはフォルダを削除し、その削除操作をすでにリポジトリにコミットした場合、通常の
→ ではもう元に戻すことはできません。しかし、ファイルまたはフォルダはまったく失われていません。ファイルまたはフォルダが削除されたリビジョンがわかっている場合 (わからない場合は、ログダイアログを使用して見つけてください)、リポジトリブラウザを開き、そのリビジョンに切り替えます。次に、削除したファイルまたはフォルダを選択し、右クリックして → を選択します。コピー操作のターゲットとして、作業コピーへのパスを選択します。ファイルまたはフォルダの単純なインプレースの名前変更を実行したい場合は、
→ を使用します。アイテムの新しい名前を入力すれば完了です。作業コピー内でファイル (おそらく異なるサブフォルダへ) を移動したい場合は、右マウスドラッグアンドドロップハンドラーを使用します。
移動したいファイルまたはディレクトリを選択します
右ドラッグして、作業コピー内の新しい場所にドラッグします
右マウスボタンを離します
ポップアップメニューで
→ を選択します
名前変更と移動は、削除に続いて追加として実行されるため、名前変更/移動されたファイルの親フォルダをコミットして、名前変更/移動の削除された部分がコミットダイアログに表示されるようにする必要があります。名前変更/移動の削除された部分をコミットしない場合、それはリポジトリに残され、同僚が更新すると、古いファイルは削除されません。つまり、同僚は古いコピーと新しいコピーの両方を持つことになります。
フォルダの名前変更をコミットしてから、フォルダ内のファイルを変更する必要があります。そうしないと、作業コピーが本当にめちゃくちゃになる可能性があります。
ファイルを移動またはコピーする別の方法は、Windows のコピー/切り取りコマンドを使用することです。コピーしたいファイルを選択し、右クリックしてエクスプローラーのコンテキストメニューから
→ を選択します。次に、ターゲットフォルダを参照し、右クリックして → を選択します。ファイルを移動する場合は、 → の代わりに → を選択します。リポジトリブラウザを使用してアイテムを移動することもできます。詳細については、「リポジトリブラウザ」のセクションを参照してください。
svn:externals
を使用して作成されたフォルダに対して、TortoiseSVN の 移動 または 名前の変更 コマンドを使用しないでください。このアクションは、外部アイテムをその親リポジトリから削除し、おそらく他の多くの人を動揺させる可能性があります。外部定義フォルダを移動する必要がある場合は、通常のシェル移動を使用し、ソースと宛先の親フォルダの svn:externals
プロパティを調整する必要があります。
リポジトリにすでに同じ名前で大文字小文字のみが異なる 2 つのファイル (TEST.TXT
や test.txt
など) が含まれている場合、Windows クライアントで親ディレクトリを更新またはチェックアウトすることはできません。Subversion は大文字と小文字を区別するファイル名をサポートしていますが、Windows はそうではありません。
これは、2 人の人が別々の作業コピーから、たまたま同じ名前で大文字小文字が異なるファイルをコミットする場合に発生することがあります。また、Linux のような大文字と小文字を区別するファイルシステムを持つシステムからファイルがコミットされた場合にも発生する可能性があります。
その場合は、どちらを保持したいかを決定し、もう一方をリポジトリから削除 (または名前変更) する必要があります。
次のサーバーフックスクリプトが利用可能です: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ これは、大文字小文字の競合を引き起こすチェックインを防ぎます。
友好的な IDE は、リファクタリング作業の一部としてファイルの名前を変更することがありますが、もちろん Subversion には通知しません。変更をコミットしようとすると、Subversion は古いファイル名を「不足」として、新しいファイル名を「バージョン管理されていないファイル」として認識します。新しいファイル名をチェックインして追加することもできますが、Subversion はファイルが関連していることを認識しないため、履歴追跡が失われます。
より良い方法は、この変更が実際には名前変更であることを Subversion に通知することです。これは、コミット および 変更の確認 ダイアログ内で行うことができます。古い名前 (不足) と新しい名前 (バージョン管理されていない) の両方を選択し、 → を使用して、2 つのファイルを名前変更としてペアにします。
通常、すべての生成されたファイルが Subversion で無視されるように無視リストを設定します。しかし、それらの無視されたアイテムをすべてクリアして、クリーンビルドを作成したい場合はどうでしょうか?通常、それは makefile で設定しますが、makefile をデバッグしたり、ビルドシステムを変更したりする場合は、整理する方法があると便利です。
TortoiseSVN は、Shift キーを押す必要があります。これにより、作業コピー内のどこにでもあるすべてのバージョン管理されていないファイルがリストされたダイアログが表示されます。次に、削除するアイテムを選択または選択解除できます。
→ を使用して、まさにそのようなオプションを提供します。拡張コンテキストメニューにこれを表示するには、エクスプローラーリストペイン (右ペイン) 内のフォルダを右クリックしながらそのようなアイテムが削除されると、ごみ箱が使用されるため、ここで間違いを犯してバージョン管理されるべきファイルを削除した場合でも、復元できます。