2007-06-14スマートフォン用の表示で見るespresso3389の日記この広告は、90日以上更新していないブログに表示しています。C#背景Subversionのリポジトリを長く運用していると、同じファイルが何度も新規でAddされていることに気づくことがあります。プロジェクトによっては、バイナリをaddせざるを得なくなることも少なくなく、その場合、確実に重複したファイルがリポジトリ上に存在する状況になります。実際、僕が運用している会社のリポジトリでは、xxxx.dllという全く同じファイルがあっちにもこっちにもaddされているという実情がありました。それぞれのプロジェクト担当者は、そのファイルが他のプロジェクトでも使われていることを気づいていないわけで、仕方ないわけではあります。Copy履歴を追加するという処理をすれば、リポジトリの肥大化や非効率化への対策になり、また、変更のトラッキングに有利になるのではないかと考え、適当にコードを書いて見ました。言っても、リポジトリに対して調節処理を行うのはほぼ不可能なので、ダンプファイルに対して処理を行います。新リポジトリパスで良いでしょう。repo-dump.gzでダンプを吐く方が良いでしょう(gzipで圧縮しています)。若干の注意が必要そうなのは、処理効率のために、ファイルの比較にはSHA1ハッシュ値とファイルサイズしか使っていないと言うことです。そのため、SHA1の衝突によってはおかしな履歴を追加してしまうことがあるかもしれません。ソースコードライセンスは、修正済みBSDライセンスでお願いします。svnhistforge.csでいけるはずです。記事は、Mediumに移行するというか、はてな制約がつらいのでやめます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。