500件の特許をオープンソース・ソフトウエアに対し許諾
http://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20050111/154581/
どういう特許かみてないからわからないけど(見ても多分わからないけど。。)かっこいいなぁ、ふとっぱらだなぁ。
けど、
IBMは2004年に3248件の米国特許を取得。12年間連続で米国で最も多くの特許を取得したという。
ふとっぱら?
インストール
http://summersoft.fay.ar.us/pub/subversion/latest/redhat-8.0/bin/
から、以下のファイルを落としてきて、
- apr-0.9.5-0.2.i386.rpm
- apr-util-0.9.5-0.1.i386.rpm
- neon-0.24.7-1.i386.rpm
- subversion-1.1.3-1.rh80.i386.rpm
それ、インストール
rpm -ivh apr-0.9.5-0.2.i386.rpm rpm -ivh apr-util-0.9.5-0.1.i386.rpm rpm -ivh neon-0.24.7-1.i386.rpm rpm -ivh subversion-1.1.3-1.rh80.i386.rpm
めも。
$ svn --version svn, バージョン 1.1.3 (r12730) コンパイル日時: Jan 14 2005, 22:30:10 Copyright (C) 2000-2004 CollabNet. Subversion はオープンソースソフトウェアです。 http://subversion.tigris.org/ を参照してください。 この製品には、CollabNet (http://www.Collab.Net/) によって開発されたソフトウェア が含まれています。 以下のリポジトリアクセス (RA) モジュールが利用できます: *p1* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol. - 'http' スキーマを操作します - 'https' スキーマを操作します *p2* ra_local : Module for accessing a repository on local disk. - 'file' スキーマを操作します *p3* ra_svn : Module for accessing a repository using the svn network protocol. - 'svn' スキーマを操作します
まずは。。
以下、ここの
http://subversion.bluegate.org/doc/ch01s07.html
を見ながら作業。
リポジトリを作る。
$ svnadmin create /home/svn/repository/ $ ls ./ ../ README.txt conf/ dav/ db/ format hooks/ locks/
ファイルをインポート
以下のファイルとディレクトリをつくってから、
- /home/svn/temp/trunk/hoge1.txt
- /home/svn/temp/trunk/hoge2.txt
- /home/svn/temp/branches
- /home/svn/temp/tags
そして、インポート
$ svn import /home/svn/temp/ file:///home/svn/repository -m "initial" 追加しています /home/svn/temp/trunk 追加しています /home/svn/temp/trunk/hoge1.txt 追加しています /home/svn/temp/trunk/hoge2.txt 追加しています /home/svn/temp/branches 追加しています /home/svn/temp/tags リビジョン 1 をコミットしました。
最初、"-m"をつけないでやったら怒られたけど、まぁよしとする。
インポートしたのを、チェックアウトしてみる。
$pwd /home/svn/workspace $ls ./ ../ $ svn checkout file:///home/svn/repository/trunk A trunk/hoge1.txt A trunk/hoge2.txt リビジョン 1 をチェックアウトしました。 $ls ./ ../ trunk/
サーバの種類
http://subversion.bluegate.org/doc/ch06.html
Subversionでは何もしなくても、file:///〜 でローカルからリポジトリにアクセスできる。
リモートからのアクセスの方法は以下の2つ。
両方同時に設定、なんてこともできるみたいだけど、まずは、初期設定が"かなり簡単"とあるsvnserveをやってみる。
svnserveを使う。
http://subversion.bluegate.org/doc/ch06s03.html
$svnserve -d -r /home/svn/repository/
とりあえず、リポジトリを限定してsvnserveをデーモン起動。
Telnetしてみると、
>telnet XXX.XXX.XXX.XXX 3690 ( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline ) ) )
なんかよくわからないのが返ってくるけど、とりあえずサーバは動いているっぽい。
というわけで、自マシンのTurtoiseSVNで、
svn://XXX.XXX.XXX.XXX/trunk
をリポジトリのURLに設定してチェックアウトする。
svnserveの認証と認可の設定をする。
上に続けて、ファイルを編集して、コミットしようとしたら、
Commit failed (detailes follow)
Connection is read-only
と怒られる。。
どうやら、リポジトリにあるconf/svnserve.confをいじる必要があるらしい。
とりあえず、以下の設定をしたい。
- AnonymouseユーザはReadOnly
- 認証されたユーザは書き込みできる。
- tagsディレクトリは認証されていようがいまいがReadOnly
まず、「AnonymouseユーザはReadOnly」「認証されたユーザは書き込みできる。」だが、これはデフォルトの振る舞いなので、わざわざ設定する必要はないが、一応、明示的に書いておく。
[/home/svn/repository/conf/svnserve.conf] [general] anon-access=read auth-access=write
Anonymouseユーザを拒否したければ、anon-access=noneとすればいい。
あとは、ユーザの定義。
svnserve.confを以下のように編集。
[/home/svn/repository/conf/svnserve.conf] [general] anon-access=read auth-access=write password-db=hogemoge.pwd realm=test relam
password-dbには、ユーザIDとそのパスワードを記述するためのファイル名を書く。上記の通りにかくと、svnserve.confと同じディレクトリにhogemoge.pwdというファイルを用意すればよい。
以下、hogemoge.pwdの内容。
[/home/svn/repository/conf/hogemoge.conf] [users] #USER=PASSWORD svn=xxxxxx masakas=xxxxxx
特に、svnserveを起動しなおすとかはしなくてもいいみたい。
これで、自マシンからコミットしてみるとユーザとパスワードを求められるので、入力すると、コミットが成功する。
特定のディレクトリにアクセス制御を設ける。
あとは、「tagsディレクトリは認証されていようがいまいがReadOnly」だけなんだけど、
リポジトリ中の特定のパスに対する詳細なアクセス制御は存在しません。多くのプロジェクトとサイトではこのレベルのアクセス制御は十分すぎるものです。しかしもしディレクトリごとのアクセス制御が必要なら、サーバプロセスとしてsvnserve のかわりに Apache を利用する必要があるでしょう。
とあり、svnserveにはそんな機能はないらしい。
しかし、pre-commitフックというものを使うと実現できるらしい。(以下の引用)
pre-commit フックを使ってファイルパス名ごとの書き込みアクセス制御を強制することができ ます。Subversion 配布パッケージには commit-access-control.pl と、より洗練された sophisticated svnperms.py スクリプトが含ま れていて、pre-commitスクリプトとして使うことができます。
けど、commit-access-control.plやら、svnperms.pyがなかったので、適当に見てみたら、リポジトリ内のhooksディレクトリにそれっぽいのがあった。
$ls /home/svn/repository/hooks/ ./ ../ post-commit.tmpl post-revprop-change.tmpl pre-commit.tmpl pre-revprop-change.tmpl start-commit.tmpl
そういうわけで、pre-commit.tmplをいじって、自前のフックを作ってみよう。
続きは、明日。。。