Hudsonの開発環境をgit-svnで準備する
Hudsonの開発ソースコードはSubversionでホストされているので、Hudson本体やプラグインを開発するにはSubversionを使う必要があります。でも、Hudsonは多数のコントリビュータによって開発されていますので、Subversionのような中央リポジトリに対する頻繁なコミットは慣れないと気が引けますし、でもローカルに変更は持ち続けたくないので、できれば今流行のGitなどの分散SCMを使いたいところです。
そこで、Gitにはgit-svnという、Subversion中央リポジトリ + Gitローカルリポジトリという使い方ができるものがあるようなので、これを使ってHudsonの開発環境を整えてみます。
こちらのサイトを参考にしました。
まずはyumでgitをインストールします。
$ sudo yum install git
Hudsonの独自ビルド方法は公式ページにあります。
これによると、普通のSubversionによるチェックアウトはこのようにやるようです。
$ svn co https://svn.dev.java.net/svn/hudson/trunk/hudson
git-svnでは次のようになります。
$ git svn clone https://fujibee@svn.dev.java.net/svn/hudson/trunk/hudson Using existing [svn-remote "svn"] Authentication realm: <https://svn.dev.java.net:443> CollabNet Subversion Repository Password for 'fujibee': Can't locate Term/ReadKey.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/bin/git-svn line 2272.
うーん、Perlモジュールエラー?おそらく、認証が通らなかっただけだと思うので、認証だけsvnコマンドで通してみます。
$ svn info --username fujibee https://svn.dev.java.net/svn/hudson/trunk/hudson 認証領域: <https://svn.dev.java.net:443> CollabNet Subversion Repository 'fujibee' のパスワード: ----------------------------------------------------------------------- **注意** 認証領域 <https://svn.dev.java.net:443> CollabNet Subversion Repository のパスワードは暗号化されていないディスクに保存されるだけです! 可能なら、 Subversion がパスワードを暗号化して保存できるよう、システムを設定するこ とをお勧めします。詳しくはドキュメントを参照してください。 '/home/fujibee/.subversion/servers' の 'store-plaintext-passwords' オプションの値を 'yes' または 'no' に設定すると、この警告がこれ以上現れないようにすることができます。 ----------------------------------------------------------------------- 暗号化されていないパスワードを保存しますか (yes/no)? yes
怪しげな警告が。。でも、平文でパスワードが保存されているだけだと思うので、パーミッションを変えればいいでしょう。
$ ls -l ~/.subversion/auth/ 合計 16 drwxrwxr-x 2 fujibee fujibee 4096 8月 14 00:22 svn.simple drwxrwxr-x 2 fujibee fujibee 4096 8月 14 00:10 svn.ssl.client-passphrase drwxrwxr-x 2 fujibee fujibee 4096 8月 14 00:10 svn.ssl.server drwxrwxr-x 2 fujibee fujibee 4096 8月 14 00:10 svn.username
確かに認証系のファイルができてそうです。
$ chmod -R go-rwx ~/.subversion/auth/ $ ls -l ~/.subversion/auth/ 合計 16 drwx------ 2 fujibee fujibee 4096 8月 14 00:22 svn.simple drwx------ 2 fujibee fujibee 4096 8月 14 00:10 svn.ssl.client-passphrase drwx------ 2 fujibee fujibee 4096 8月 14 00:10 svn.ssl.server drwx------ 2 fujibee fujibee 4096 8月 14 00:10 svn.username
これでOK。気を取り直して、git-svn、をしてみたのですが、先ほどのエラーで残骸が残ってしまったようなのでいったん消します。
$ rm -rf hudson/
再度。
$ git svn clone https://fujibee@svn.dev.java.net/svn/hudson/trunk/hudson
Initialized empty Git repository in .git/
A hudson.iml
A lib/retroweaver/retroweaver.jar
A lib/retroweaver/bcel-5.1.jar
A lib/retroweaver/Regex.jar
A lib/retroweaver/jace.jar
A lib/stapler.jar
うまくいきました!でも、リポジトリ取得まで時間がかかる様子。。screen上で実行していてよかった。
途中経過。
A plugins/jwsdp-sqe/src/main/webapp/help.html A plugins/jwsdp-sqe/pom.xml A plugins/jwsdp-sqe/.cvsignore r974 = b51ffed625c3fdbd2cc41a2a76330a8835c63d54 (git-svn) M main/war/pom.xml r975 = 96ae059f1bc3dbf6f064e1ce89ad233cfdc6dd1f (git-svn) M main/core/src/main/resources/hudson/model/JobCollection/index.jelly r976 = 0ed7f7113b33f3041de7738ed43cbebc92a20e95 (git-svn) A tools/maven-hpi-plugin/.cvsignore A main/core/pom.xml A main/core/README.txt