Subversion(svn)で外部参照ファイルを含む差分を表示する。(2)

これで。

 

svn di -r head

svn pg -vR svn:externals | grep ^"\s\s\s\s" | awk '{print $1}' | xargs svn di -r head

 

前の記事とタイトルを合わせるために2行になってしまいました。

1行目はよくあるHEADリビジョンとの差分一覧、2行目が、「外部参照ファイルのみの」HEADリビジョンとの差分一覧ということになります。

 

前の記事では、-r headをつければHEADリビジョンとの差分を取得できて便利!と書いたのですが、これには致命的な問題がありました。

というのも、前記事のコマンドはsvn stでMフラグ(もしくはAフラグ)が立っているファイルにdiを取るものでした。

そのため、ローカルで編集がないファイル(=BASEリビジョンから差分がないファイル)は、HEADリビジョンとの差分があっても表示されないという欠点があります。

 

今回は、どうしてもHEADとの差分を取りたいので、とりあえず1行で収めることを諦めて、せめて外部参照は外部参照でひとまとめにして差分を取れる、というところで妥協した結果です。

見ての通りgrepで無理やり必要な行を絞り込んでいるので、svnのバージョンやexternalsの書き方によっては動作しないかもしれません。

(当方環境はsvn1.9.7で確認しています。)

 

使用したい環境で`svn pg -vR svn:externals`を出力して、必要に応じてgrepの絞り込みを調整してみるとイイかもしれません。

 

外部参照が手に負えない程貼られているっていうのは、そもそもリポジトリ構成がおかしいんじゃないか?という気もするんですけども(ぼやき)。