Redmine のバージョンアップをアーカイブではなく SVN で行うよう変更

以前、Redmine のバ−ジョンアップ方法(Redmine 0.8.7 から 0.9.0 にバージョンアップする方法)を書いたのですが、アーカイブでインストールしていたので、バージョンアップがめんどくさくって困りました。
なので、今回アーカイブ形式でインストールしてたものを SVN で管理することにしました。(バージョンは、0.9.0 から 0.9.2 に)

大まかな手順

  1. Redmine 0.9.0 のバージョンを、RubyForge からチェックアウト
  2. チェックアウトしたリポジトリに、今まで使ってた Redmine のデータを上書き
  3. 上書きしたディレクトリで、Redmine 0.9.2 のモジュールを取得(svn switch)
  4. Redmine を Git で管理しているので、Git のリポジトリをバージョンアップ対象のディレクトリに移動(その際、.gitignore に .svn を追加)

ひと通りやったコマンド

これで一通りできました。
前提として、Redmine を /home/www/hoge にインストールしていることにします。また、SVN からチェックアウトするディレクトリを、tmp-0.9.0 とします。

cd /home/www/hoge
svn checkout http://redmine.rubyforge.org/svn/tags/0.9.0/ tmp-0.9.0
/bin/cp -f redmine/* tmp-0.9.0/
cd tmp-0.9.0
svn switch http://redmine.rubyforge.org/svn/tags/0.9.2/
vim .gitignore  ## .svn を追加
cp -rp ../redmine-0.9.0/.git ./

ハマった点

  • ワイルドカードを使うと、そのディレクトリの直下(この場合 redmine 直下)にある隠しファイルは認識されないので、コピー対象外になるということ。
    • 最初 .git ディレクトリがコピーされなくてちょっと悩んだ。
    • redmine/app とかと同じ階層にある隠しファイルはコピー対象になるから余計に混乱してた。
    • 途中で上記のことに気づいたので、.git ディレクトリだけ手動でコピーして解決。
  • cp の f オプションをつけても、上書きしますか?の確認がされて鬱陶しい。(ファイル数めちゃくちゃあるのに)
    • alias コマンドを実行して確認すると、cp コマンドに、i オプションのエイリアスがはられているせいだった。
    • cp コマンド実行時、絶対パスで書くことで解決。


これでSVN 管理になったので、今後バージョンアップがあったら下記のコマンドを実行すれば OK。だいぶ楽になりました。

svn switch http://redmine.rubyforge.org/svn/tags/0.9.X/