tortoise svn では、abc というフォルダーに 3 つの txt ファイルがあります。フォルダーの名前を abc から xyz に変更して表示ログを表示すると、xyz のみが abc からコピーされ、abc フォルダーが削除され、xyz 内のファイルはコピーされますが、ログには表示されません。
svn でフォルダの名前を変更したときにファイルを表示するにはどうすればよいですか
これらのファイルを変更していないため、3 つのファイルの変更は表示されません。それらがあったディレクトリの名前を変更しただけです。
何を達成したいですか?Subversion が、名前が変更されたフォルダー内のすべてのファイルを変更済みとして報告したとします。それはどのように役立ちますか?あまり良い考えではないいくつかの状況を想像できます。
私が Maven を使い始めた状況を想像してみてください。Maven では、ソース ファイルはフォルダーの下にある必要がありますsrc/main/java
。ほとんどの開発者と同様に、私は自分の Java ソース コードをリポジトリのルート直下に配置しましたsource
。src/main/java
ここで、何百もの Java ソース ファイルを表すことができるディレクトリ内のファイルを移動する必要があります。これで、変更された 3 つのファイルのみを示すログではなく、数百のファイルがリストされます。
ディレクトリの名前を変更したときに、いくつかのファイルを変更したとしましょう。一部の親ディレクトリが変更されたためにファイルがリストされたのと、実際に変更されたファイルとの違いを知るにはどうすればよいですか。一部のプロパティが変更されたファイルがログに表示されるが、ファイル自体は表示されない (マージが行われ、svn:mergeinfo
プロパティが更新されたときに問題が発生する可能性がある) と、人々は既に不満を漏らしています。これで、各フォルダーの名前変更がリポジトリ全体にカスケードされます。タグが作成されることがありますが、名前が正しく行われていないため (REL-1.2 対 rel-1.2.0)、タグの名前を変更することがあります。これで、そのタグ内のすべてのファイルが変更されたものとしてログに表示されますか?
Python や Perl でやりたいことを行うのはそれほど難しくありません。asvn log
を実行し、特定のリリースでディレクトリの名前が変更されたことを確認したら、svn ls --recurse
そのフォルダーに対して a を実行し、その中のすべてのファイルを取得します。