Archive for category Subversion

任意のリビジョン間で更新したファイルだけを抽出したい

Capistrano とか rsync とかでガツンとアプリケーションを配布するのが一番楽なんだけど
クライアントにはよっては差分ファイルだけくださいとか言われたりする。
もしくはクライアント側でも Subversion で管理してたりする・・・

svn diff -r 972:986 | diffstat

のようなコマンドを実行し、まず更新したファイルのパスを拾いあげ
せこせこ差分ファイルを抜き出したりしてたんだが、いかんせんメンドクサイのである。

そんな訳で Google に聞いてみる。(検索しただけですけどね)
TortoiseSVN でできるようだ

  • 作業コピーのディレクトリを右クリック「TortoiseSVN」メニューで「ログを表示」を選択
  • 出力されたログから比較したいリビジョンを選択(Ctrlキーでリビジョンを2つ選択)
  • 右クリックして「リビジョンを比較」を選択
  • 比較結果からエクスポートしたいファイルを選択
  • 右クリックして「選択をエクスポート」を選択
  • エクスポート先を指定

これでなんと更新したファイルだけ抜き出せちゃうんですね~
いや~、こりゃ便利だ。

追記~
そして TortoiseSVN じゃなくてコマンドでも抽出できるのがわかった
※任意のリビジョン間じゃないけど・・・

# cd [作業コピー]
# svn st | sed -e "s/^.*  //g" | cpio -pdv ./work

後、ちょっとだ。。

SubversionとredMineのIDを連携してみる

プロジェクト管理ツール(redMine)を入れたのだから、redMineに登録されているアカウント情報をベースにリポジトリのアクセス制御を実現したいということで、mod_auth_mysqlモジュールを使ってSubversionとredMineのIDを連携してみることにしました。

ひとまず以下のルールで

  • プロジェクト名 ⇒ my-project (redMineの識別子も同じく)
  • リポジトリパス ⇒ /var/svn/my-project/repos
  • リポジトリはプロジェクト単位で作成
  • リポジトリへのアクセスはプロジェクトの参加メンバーのみ

以下の内容で httpd.conf を編集すれば無事連携完了です。

※[username]、[password]、[database]は適宜書換えてください。

<location /svn/my-project>
    DAV      svn
    SVNPath  /var/svn/my-project/repos
    Require  valid-user

    # mod_auth_mysql
    AuthName "My Projects"
    AuthType Basic
    AuthMySQLEnable on
    AuthMySQLUser [username]
    AuthMySQLPassword [password]
    AuthMySQLDB [database]
    AuthMySQLNameField login
    AuthMySQLPasswordField hashed_password
    AuthMySQLUserTable "users,members,projects"
    AuthMySQLUserCondition "users.id=members.user_id and projects.id=members.project_id and projects.identifier='my-project'"
    AuthMySQLPwEncryption sha1
 </location>

Subversion でリポジトリのパスを変更したい

OpenLDAPの導入失敗など幾多の試練を乗り越え(?)
ようやくプロジェクトサーバのセットアップが完了しました。

っで、点在しているリポジトリをプロジェクトサーバに集めているんですが
作業コピーでは元のパスにアクセスできなくなってしまいました。。。

新しい作業コピーをチェックアウトすんのもやだなぁー
と思って調べていると、あるもんですね~

svn switch というコマンドを使ってパスを書き換える方法がありました。
探せばなんとかなるもんだ
※尚、指定するリポジトリURLは適切なものに変更してください。

# svn switch --relocate https://old_url/repos https://new_url/repos

正しく変更されたか確認

# svn info
パス:
URL: https://new_url/repos/svn/project/trunk
リポジトリのルート: https://new_url/repos/svn/project
リポジトリ UUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
リビジョン: 954
ノード種別: ディレクトリ
準備中の処理: 特になし
最終変更者: yabumaru
最終変更リビジョン: 954
最終変更日時: 2008-05-07 10:42:08 +0900 (水, 07  5月 2008)

う~ん、トレビア~~~ン!