Aptanaを使用してColdFusion Webサイトを開発しています。バージョン管理にSVNを使用しています。
いくつかのファイルの名前を変更して、そのうちの1つをコミットしようとしていますが、次のエラーが表示されます。
'SVN Commit' has encountered a problem.
org.Apache.Subversion.javahl.ClientException: Illegal target for the requested operation
svn: Commit failed (details follow):
svn: Cannot commit 'R:\myPath\My-New-File-Name.cfm' because it was moved from 'R:\myPath\My-Old-File-Name.cfm' which is not part of the commit; both sides of the move must be committed together
これは、以前のファイル(名前が変更された)と新しい名前が変更されたファイルの両方を一緒にコミットする必要があることを示しているようです。存在しないファイルをコミットするにはどうすればよいですか?
ファイルではなくディレクトリをコミットします。
ディレクトリは、その中に含まれるファイルのリストを含むテキストファイルと考えると、正常にコミットするには、ディレクトリ自体を更新して古いエントリを削除し、新しいエントリを追加する必要があることがわかります。これは、古いファイルを削除して新しいファイルを追加するものとしてSVNに表示されます(つまり、ファイルへの1つの変更ではなく、ディレクトリへの2つの変更)
1ファイルのみをコミットする場合は、他の変更されたファイルを一時的に無視リストに追加する必要があります。
さまざまなクライアントがこれを他のクライアントよりもうまく処理しているようです。
Visual StudioのAnkhSVNはこのエラーに遭遇し、対処できません。
ただし、TortiseSVN(シェル拡張)は機能します。古いファイルを削除して新しいファイルを追加することを認識しています。
したがって、Windowsを使用している場合、これを回避する簡単な方法は、ExplorerのTortiseSVNを使用してディレクトリでコミットを行うことです(古いファイル名を削除して新しいファイル名を追加します)。
古い名前のファイルを追加してコミットし、その後ファイルを削除して再度コミットします。
EclipseでSubversionを使用する場合、プロジェクトの十分なレベルのフォルダーでTeam-> synchronizeを実行することで、この紛らわしいエラーを回避することができました。ファイルを移動して名前を変更した場合、または何が起こっているのか正確に把握できない場合は、プロジェクトの最上位レベルで同期しても問題はありません。
これを行うと、名前が変更されたファイルの古いバージョンが同期ビューに表示されました。それらに対して「オーバーライドとコミット」を使用すると、それらは再び表示されなくなりました。この時点で、新しいものは最終的に適切にコミットされます。
ファイルの1つが名前変更される可能性があります。
エラー内のファイル名を見て、これがファイルと一致するかどうかを確認してください。
ファイル名が一致しない場合は、ファイルの名前をエラーの名前に変更し、コミットするすべてのファイルをコミットします。この後、ファイルの名前を変更して再度コミットできます。
svn commit 'R:\ myPath\My-New-File-Name.cfm' 'R:\ myPath\My-Old-File-Name.cfm' -m "message"
私のために働く。また、削除されたファイルを含める必要があります。
本当に混乱した場合、最も簡単な解決策は、フォルダーをリポジトリから削除してから、現在のフォームに追加し直すことです。
SVNワイプと交換:
Visual Studio 2015では、Ankh SVNの修正につまずいた。私の場合、エラーは開発中に「Form1.cs」の名前を変更した(そしておそらく移動した)ために発生しました。これにより、古い.resxファイルで問題が発生しました。
これがあなたのために働くことを願っています。
IntelliJ IDEAを使用し、TortoiseSVNでコミットする場合、フォルダーがIDEAとSubversionがこのエラーを作成することによって削除されないことがあります。
その場合、それは"削除済みとしてマークしたフォルダ/ファイルをコミットしないでください"を意味します