Subversion事始め
最近のバージョン管理は SubVersion がはやっているようなので、SubVersionを利用する為の練習をしてみた。参考にした、URLは次のようなところ。
すでにServerに入っていたのでリポジトリの作成からやらないと(ディレクトリは適当)。
svnadmin create /var/svn/repository
という感じでやればいいようだ。svn の約束事として、trunk, tags, branchesというのをその下につくるらしい。が、個人で利用するのだし、本の説明をみると、リポジトリの下にプロジェクト名が来て、その下に trunk, tags, branches の各ディレクトリを作成する形が紹介されていた。後々使いそうだから、そのように作成することにしてみる。また、本をみるとimportで作成するのが楽そうだ。
何度か手動でコマンドから作成して練習をしてみた。大体分かってきたので、シェルにしておく。
#!/bin/sh PROJ=$1 if [ "X$PROJ" = "X" ]; then echo "$0 <project-name>" exit fi mkdir -p $PROJ mkdir -p ${PROJ}/trunk mkdir -p ${PROJ}/tags mkdir -p ${PROJ}/branches echo "Project $PROJ was created. " > ${PROJ}/trunk/readme.txt svn import $PROJ file:///var/svn/repository/$PROJ -m "Initial import for $PROJ"
適当に保存して、実行時にプロジェクト名を渡す。
$ init_project.sh testproject1
ディレクトリで区切られたプロジェクト(foo/barのようなやつ)は、考えていない。必要なら、そのときに考えよう。
次に、ネットワーク経由でアクセスできるようにする為に設定をした。いくつか方法が書いてあったが、とりあえず、xinetd経由でアクセスを考えることにする。外に出すわけではないので、アクセスができればいいのだが、xinetdの設定は書いてなさそうだ。なので、自分で設定を作る。
# cat /etc/services | grep svn svn 3690/tcp # Subversion svn 3690/udp # Subversion
のようにして/etc/services/にエントリがあることを確認して、/etc/xinetd.d/ に次のようなファイルを作成した。
------ /etc/xinetd.d/svn ----- $ cat svn # default: on # description: A subversion server. This is the tcp \ # version. service svn { socket_type = stream protocol = tcp user = svnrep server = /usr/bin/svnserve server_args = -i -r /var/svn/repository wait = no disable = no } ------ end of file ------
これで、xinetd を再起動などすれば、xinetd.d経由でアクセスできそうだ。
$ telnet localhost 3690
とかで接続できれば、問題ないと思う。
次に、接続の許可/不許可 の設定を行う。いくつかやり方があるが、簡単にユーザ名を認証して書き込めればいいかなと思うので、設定をした。
作成したリポジトリの下にある
リポジトリ/conf/svnserve.conf
を開けばいろいろコメントがある。その中で次のような感じで設定をしておけばよさそうだ。
[general] anon-access = read auth-access = write ... password-db = password.conf
そして、
リポジトリ/conf/password.conf
に
[users] hogeuser = hogepass
とでも書いておけば、hogeuser でアクセスすれば commit できそうだ。パスワードは、平文でもいいのか?とおもったら、これで通った。いいのか?と思いつつ、必要なら、SSHでのアクセスも確認しようと思う。
クライアントは、Linux でやる場合は、コマンドラインで大体わかっているが、Windows でも使いたいのでどうするか調べてみた。Shell Extension ? かな。右クリックで使えるのが、tigris というサイトでDownload できるので使ってみた。インストールも問題なく入り、Checkout してみたら、svn:// ... と入れるDialog がでてきた。
svn://host/testproject1/trunk
で、取り出せばtrunkのファイルがちゃんと(あたりまえだけど...)取り出せた。適当にファイルを追加して、commit してみた。すると、認証ダイアログが出るので、先ほどのなんちゃってユーザとパスワードを入れればCommitできた。
大体この辺を使えば、HEAD(tagとかつけたりしない) に対する作業はなんとかなりそうだ。