17


3

ファイルが「コミットでスケジュールされた履歴」でマークされている場合のsvn diff

作業ディレクトリのトランクにマージしたブランチに変更があります。 Svn statは、変更されたファイルの正しいリストを表示します。 ただし、「svn stat」の出力には、ブランチに新しく追加された各ファイルのコミットがスケジュールされた履歴に「+」が含まれます。

_ A + src \ main \ java \ com …​. java _

「svn diff」を実行すると、「+」が付いている追加ファイルはパッチ出力に含まれません。

これは壊れているようです。 ファイルが追加済みとしてマークされている場合、その内容全体がdiff出力にあるはずです。 --notice-ancestryを渡してみました。 diff出力に変更はありませんでした。 同じ問題に最も近いのは、コピー/移動したファイルに関するhttp://svn.haxx.se/dev/archive-2009-10/0055.shtml [これらのコメント]です

誰かがSVNにこれらのファイルをdiff出力に含める方法を知っていますか?

このhttps://stackoverflow.com/questions/317649/how-to-make-svn-diff-produce-file-that-patch-would-apply-when-svn-cpで示唆されているように、私は外部diffプログラムを試しました。 -または-svn-mv-w [questions]の答えですが、私にはうまくいきませんでした。

3 Answer


17


バージョン1.7がリリースされると、 svn diff`にはそのための --show-copies-as-adds`スイッチがあります。 これは、1.6までのバージョンにはその機能がないことを示しています。


12


svn statusの出力の+文字は、ファイルに「コミットの履歴がスケジュールされている」ことを示します。 これは、ファイルが実際には新しいファイルではなく、実際にはSubversionリポジトリ内の他のファイルの直接の子孫であることを意味します。

これは、ファイルが実際に変更されていないため、svn diffに出力が_should_ないことを意味します。 ファイルにローカルな変更を加えると、svn diff出力に表示されます。


0


「svn mv fileA fileB」の場合。 fileBの近くに+記号があります。 +記号は、実際のファイルの内容が変更されていないことを意味するため、svn diffには表示されません。 この場合、ファイル名が変更されただけです。