2006年6月25日日曜日

タグを頻繁に切るようなプロジェクトでのsvkの使い方。これでいいのか?

ここ最近はsvkを使ってバージョン管理をしているんですが、svk help introで見ることができるイントロで紹介されているように 、

>

# リポジトリをミラー
svk mirror svn://svn.example.com/project_x //mirror/project_x

# リポジトリを同期
svk sync //mirror/project_x

# ローカルリポジトリを作成
svk copy //mirror/project_x //project_x

<

として、同期したproject_xのリポジトリをそのままローカルリポジトリにするという方法でしばらく使っていました。最初はこれで問題ないように思えたんですが、元のリポジトリでブランチやタグを切った後、svk pull //project_xして、リポジトリの同期をとると、ブランチやタグがファイルの実体としてコピーされているようだということに気づきました。

僕の会社でのsubversionの使いかたは、trunkで開発を進めて、リリースの準備ができたら、ブランチを切り(例えば branches/RB-2.3)、実際にリリースする時にはタグを切る(例えば tags/REL-2.3.0)という形をとっているので、結構タグを切ることが多いです。

これだとタグを切るたびにsvk pullするとそのプロジェクト分のファイル容量が消費されてしまい、すごくディスクを無駄にしているような気がしていました。

そこで考えたのが以下の方法。

>

# リポジトリをミラー。ここは同じ
svk mirror svn://svn.example.com/project_x //mirror/project_x

# リポジトリを同期。ここも同じ
svk sync //mirror/project_x

# trunk,brancheのローカルリポジトリをそれぞれ作成。ここを変更
svk copy //mirror/project_x/trunk //project_x-trunk
svk copy //mirror/project_x/branches/RB-2.3 //project_x-rb2.3

<

ローカルリポジトリを作成する際にリポジトリそのままではなく、トランクとブランチをそれぞれローカルレポジトリとして作成してみました。
今はこの方法で開発をはじめてますが、pull, push,なんかも問題なくできますし、トランクの作業コピー上で、svk smerge //project_x-rb2.3として、リリースブランチの修正をトランクにマージすることもできているので、問題はなさそうです。

もうひとつ、考えられる方法として、mirrorする際に、trunkをミラーするという方法もできそうですが、なんかこの方法だと管理が複雑になりそうだったので上記の方法をとりました。

svkは結構柔軟にいろいろできるっぽいので、他のひとがどういう風に使っているのかちょっとしりたいなーと思いました。

2006年6月13日火曜日

MacOSX に IMAPサーバ構築 (Dovecot)

会社のネットワークセキュリティが厳しくて、ローカルのPostfixからメールを外部に送信できないので、メールのやりとりもローカルで完結するよう、ローカルにIMAPサーバをたてることにしました。
以前にIMAPサーバをたてた時はcourier-imapを使ったんですが、ググってみると、Dovecotというのがよさげだったので、そちらをいれてみることにしました。

構築はMac mini/3.メールサーバを参考に行ないました。というかほとんどここに書いてあるとおり実行しただけです。

インストールはDarwinPortsにパッケージがあるのでそれをいれました。簡単!
>

sudo port install dovecot
<

インストールが完了すると自動起動するには以下のコマンドを実行しろというようなメッセージがでてきたので実行しました。

>

sudo launchctl load -w /Library/LaunchDaemons/org.darwinports.Dovecot.plist
<

これをやると /etc/hostconfigにMAILSERVER=-YES-が追加されたりするみたいです。

参考にしたサイトだとここでDovecotユーザを作成すると書いてありますが、今回試したかぎりでは、
この時点ですでにDovecotユーザが作成されていました。

次にPAM認証の設定をしました。 sshdの設定を流用しました。

>

sudo cp /etc/pam.d/sshd /etc/pam.d/dovecot
<

/opt/local/var/runが必要ということで作成しました。

>

sudo mkdir -p /opt/local/var/run
<

サンプルをコピーして設定ファイルを作成しました。

>

sudo cp /opt/local/etc/dovecot/dovecot-example.conf /opt/local/etc/dovecot/dovecot.conf
<

設定ファイルは以下のように修正しました。
利用プロトコルをimapだけにして、SSLは無効にしました。

>

--- /opt/local/etc/dovecot/dovecot-example.conf 2006-06-12 10:43:19.000000000 +0900
+++ /opt/local/etc/dovecot/dovecot.conf 2006-06-12 10:59:57.000000000 +0900
@@ -18,6 +18,7 @@
# Protocols we want to be serving:
# imap imaps pop3 pop3s
#protocols = imap imaps
+protocols = imap

# IP or host address where to listen in for connections. It's not currently
# possible to specify multiple addresses. "*" listens in all IPv4 interfaces.
@@ -44,6 +45,7 @@

# Disable SSL/TLS support.
#ssl_disable = no
+ssl_disable = yes

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
<

ここまできたら、OSを再起動すると、起動時にDovecotがたちあがるようになりました。

手動でdovecot 起動、停止、再起動するには以下のコマンドをたたけばいいようです。

>

sudo SystemStarter start Dovecot
sudo SystemStarter stop Dovecot
sudo SystemStarter restart Dovecot
<

MacBookでさくさく開発できるようになりました

どうしても欲しくて、いてもたってもいられず、会社近くのさくらやでMacBookを購入してから1週間くらいたちましたが、環境構築もだいたいおちついて、快適に開発できるようになってきました。

Windows+VMWareな開発環境と比べるとすべてがさくさく動いて涙がでそうです。
以前は svk pull と打ったあとにトイレいって帰ってきてもまだ終了してないってことがざらにあったんですが、
今はすぐに終了するのでトイレに行く暇もありません。

はじめてのMacだったんですがとなりの席のyoshidaさんにいろいろ教えてもらえたので、スムースに移行できたとおもいます。yoshidaさんがいなかったらアプリのインストールの仕方もわかりませんでしたw ありがとうございます。そしてこれからも色々教えてください。