subversionを使っていて、ときどきですが、「あ〜、このファイル ( 例えば hoge.log ) はsvn管理する必要無かった」とか思って、svn管理下から外したいことがあります(よね?)。こういうときに

cp hoge.log hoge.log.bak
svn delete hoge.log
svn commit hoge.log # hoge.log はローカルからも削除される
mv hoge.log.bak hoge.log

とかやるのは面倒くさい(´Д⊂)です。。これをもっと楽にやる方法を探してみたらありましたよ!

で、この方法を利用するには subversion 1.5 から導入された--keep-localオプションを使いm・・・と思ったら手元の yum でインストールした subversion は 1.4.2 でした。。ので、まずは subversion をソースからインストールし直します...orz

sudo yum remove subversion # yum の subversion は削除しておく

wget http://subversion.tigris.org/downloads/subversion-1.5.5.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.5.5.tar.gz
tar zxf subversion-1.5.5.tar.gz
tar zxf subversion-deps-1.5.5.tar.gz
cd subversion-1.5.5
./configure --prefix=/usr/local/subversion-1.5.5 \
            --with-apxs=/usr/local/apache/bin/apxs \
            --with-apr=/usr/local/apr/bin/apr-1-config \
            --with-apr-util=/usr/local/apr/bin/apu-1-config \
            --with-ssl
make
sudo make install
sudo ln -s /usr/local/subversion-1.5.5/bin/svn /usr/bin/svn

svn --version # svn, バージョン 1.5.5 (r34862)

よし!おk!apr や apr-util がインストールされていないときには CentOS 4.7 に Subversion 1.5.4 をソースから入れる Kawa.netブログ(川崎有亮)/ウェブリブログ のような感じで事前にインストールしておいてください。(=゚ω゚)ノ

実は最初、subversion-deps-1.5.5.tar.gz を使わずにインストールしたんですが、http://xxx のリポジトリに対して commit や update が出来ないという問題が起こりました。どうも http://xxx のリポジトリを操作するためには neon というライブラリが必要なようです。

Subversionでhttp(s)のURLスキームを認識しない問題を解決する。 - Lazy Technology
NeonはNeon公式からダウンロードするか、Subversionの依存ファイルを一括してパッケージしたtarファイルに含まれている。

ならば、ということで、↑のサイトを参考に、Subversionの依存ファイルを一括してパッケージしたtarファイル (subversion-deps-1.5.5.tar.gz) を利用することにして、無事解決しました。neon を別でインストールして、subversion インストール時に--with-neonオプションを付ける、でも大丈夫なはずです。

で、やっと本題に戻るわけですが、以下のようにすればローカルのファイルを残したまま、svn管理下からは外す(リポジトリから削除)することが可能です。

svn delete hoge.log --keep-local
svn commit hoge.log # hoge.log はローカルに残ったまま

やったぁーーー。快適!! ゚+。*゚+。(*´Д`)σ)Д`*) ベンリジャナイカ 。+゚*。+゚
このエントリーをはてなブックマークに追加