englishjapanesefrench
http://akihiko.shirai.as

[Shortcuts]

メインメニュー

blog[RDF]

検索

Recent Documents

新着ダウンロード

ログイン

ユーザ名:

パスワード:


パスワード紛失

新規登録

オンライン状況

3 人のユーザが現在オンラインです。 (3 人のユーザが documents (wiki) を参照しています。)

登録ユーザ: 0
ゲスト: 3

もっと...

アクセスカウンタ

今日 :126126126
昨日 :123123123
今週 :126126126
今月 :4102410241024102
総計 :1960639196063919606391960639196063919606391960639
平均 :454454454
taquino.net


Top / Subversion

Documents > Programming > Subversion

Subversion関連メモ



Subversion(SVN)とは

ソースコードバージョン管理システム。ソースコード管理といえば、cvsやVisual Source Safe(VSS)が有名であるが、オープンソース(Apache/BSD-styleライセンス)で開発されており、CVSをリプレースすることを目標として開発されている。

何が便利か

とりあえず、軽く使ってみた経過。

  • UIがcvsに比べて楽
  • ファイルベースのデータベースで管理が楽
  • サーバーもマルチプラットフォーム
  • 結構無茶な使いかたしても堅牢
  • ブランチなども作りやすいのかも

デメリット

あんまり思いつかないが…

  • Linuxで管理するとSSHなども設定する必要があるので最初がめんどい
  • SSHなどを使わない方法はセキュリティ的にはけっこうスカスカ
  • WebDAVをインタフェースとする方法もあるがこれは試してない (見るからに大変で危なそうだから)

関連サイト

公式サイト

http://subversion.tigris.org/

Windows用クライアント

http://tortoisesvn.tigris.org/

実はSubversionが楽だ、というほとんどの原因はこのシェルに統合されたクライアントソフトのおかげともいえる。 アイコン表示が非常にわかりやすい。

その他便利なページ

東工大ロボット技術研究会:ロ技研の知識:Subversion

Subversionレポジトリの使い方

私がSVNを使い始めた理由はSpringheadが使い始めたから。まだSVN黎明期のドキュメントであるがさまざまな環境、特に研究室やLANではないグループでの開発の例が参考になるとおもいます。

https://opensvn.csie.org/

タダでOpenSVNのリポジトリが作成・利用できる。ちゃんとパスワードもかかるしHTTPSだけど、親サイトからしてわけわからんし、見事なまでの「オレオレ証明書」。こんなところに大事なものを置いて良いのでしょうか?何度か使ったことがあるのですが、あくまでSVNのお試しだと思ったほうがよいと思います。

Subversionでサイト管理]

「ソース管理」ではなく「サイト管理」。Webサイトのソースコードマネジメントとしてもかなり便利であることがわかる。


サーバーセットアップ(拡充中)

実はLinuxである必要はない。LAN内のWindowsでもセットアップ可能なはず。グローバルな開発をしないのであれば、これで良いんじゃないかとおもう。

リポジトリの作成

この場合は、Linuxサーバ上にsvnというユーザを作ってそのホームディレクトリに複数のリポジトリを作成するような運用を想定している。

例えば「GPUVision」という名前のリポジトリを作る場合…

svnadmin create --fs-type fsfs /home/svn/GPUVision
chgrp -R svn /home/svn/GPUVision/
chmod -R g+w /home/svn/GPUVision/
vi /home/svn/GPUVision/conf/svnserve.conf

ここでsvnserve.confを以下のように修正する。

(コメント行がいっぱいあるので、使う行だけ利用します)
[general]
anon-access = none
auth-access = write
password-db = passwd

上記の設定は、匿名利用不可、認証後は、書き込み可能、パスワードファイル名を指定、というだけのことです。簡単。

あとはパスワードファイルを作成。

vi /home/svn/GPUVision/conf/passwd
[users]
gpuvision = hogehoge

(username) = (password)という書式。 パスワードは特に暗号化されてません。

基本的な認識

「svn://」とは?

 SVNのプロトコルで、リポジトリのURLを示すときに使われる。アクセスの仕方によって、「svn+ssh://」という表記もある(SSH認証)。

ユーザのパーミッションは?

Apacheのような巨大なデーモンではなく、ユーザアプリケーションとして動くツール群なので、特に気にする必要はないが、管理上svnというユーザとグループを作っておけばよいのでは。

ファイルのパーミッションは?

svnのサーバプログラム「svnserve」が読み書きできないようなパーミッションでは当然ながら、SVNクライアントがアクセスしても失敗する。SVNプロトコルは単に、SVNクライアント→svnserve→ファイルアクセスしているだけなので、svnserveを誰が起動したか、で決まることに注意。

「svnserve.conf」とは?

各リポジトリのアクセス権限を設定する。全リポジトリではない。設定によっては誰でも読み書き可能なリポジトリが出来てしまうことに注意。

起動するには?

「/usr/bin/svnserve -d」 ただしrootで実行するのはセキュリティの視点から、危険だと思う。

起動スクリプトが同梱されていないので注意。 以下、VineLinux?の例。

#!/bin/sh
# description: subversion server
# chkconfig: 2345 99 00

case "$1" in
'start')
	/usr/bin/svnserve -d
	touch /var/lock/subsys/svnserv
	;;
'stop')
	rm -f /var/lock/subsys/svnserv
	;;
*)
	echo "Usage: $0 { start | stop }"
	;;
esac
exit 0

ってゆかWebminで設定しただけですが。

Linux上のサーバー設定上の注意点

上記をよく読んでいただくと判ると思いますが、svnを実行するユーザに、リポジトリのファイルを実際に触れれて変更できるパーミッションが必要です。なので、うかつにrootでリポジトリを作ったりすると面倒なことになったりします。

サービスへの追加はデフォルトではついてきませんが、この方が便利だと思います。

クライアントセットアップ

Windowsクライアント

  • 本家TortoiseSVNからカメ種のSVNを入手。
  • 日本語情報サイトを読んで基本的な使い方を学ぶ。OpenSVNをおそるおそる使ってみるのもよいかもしれん。

用語集

レポジトリ
SVNのデータベースのこと。SVNでは格納形式にBerkeleyDBとfsfsが選択できる。デフォルトはBerkeleyDBだが、初心者にはFSFSのほうがわかりやすい。
BerkeleyDB
ミニデータベースシステム。MySQL-Maxバイナリの下層でトランザクションストレージエンジンとしても働いている。別名BDB。http://www.sleepycat.com/
fsfs
Subversion 1.1からサポートされた。svnadmin create --fs-type=fsfsで指定できる。お勧め。
OpenSVN
無料で使えるSVNレポジトリ提供サイト。かなりリスクあるので、使うなら単なるSVNの機能の確認だけにとどめるべきだろう。https://opensvn.csie.org/
オレオレ証明書
自分の証明書は正しいと言い張る第三者機関の認定のない証明書。テストなら良いけど、HTTPSとしては無意味。オレオレ詐欺によく似ているのでこう命名された。OpenSVNがそれ。

TIPS

FSFSを選択する理由

MLのアーカイブより抜粋。

FSFS の利点

  • 復旧作業の軽減、あるいは不要
    • 異常終了時のリポジトリ破壊を防げる
  • リポジトリサイズの軽減
    • FSFSは差分で保存する。
    • FSFS リポジトリは BDB リポジトリよりも小さい(減少率10-20%程度)。ブランチによる。
  • プラットフォーム非依存
  • ネットワークファイルシステム上での構築可能性
  • 標準的なバックアップソフトウェアが利用できる
    • 差分バックアップすれば効率的。
  • リポジトリを複数のスプール上に分散できる
    • リポジトリが大きくなりすぎた場合、別のファイルシステムにシンボリックリンクすることができる。
  • より理解しやすいリポジトリ構成

FSFS の欠点

  • HEAD のチェックアウト時にサーバに対してより大きな負荷がかかること
  • 処理の最終ステップの遅延
    • FSFS のコミットは一般的にBDB のコミットよりも速いが、FSFSコミットのより多くの処理は最終ステップまで持ち越される。
    • (数万個のファイルのような)非常に大きなコミットではこの最終ステップは数分の遅延を起こす可能性がある。
    • コミットの最終ステップの間、ユーザには何のメッセージのフィードバックもないので、人によっては耐えがたいかも知れないし、最悪、HTTP クライアントがタイムアウトしてしまう可能性もある。
  • コミットのスループットの減少
    • コミットの最終ステップ非常に多くの処理が発生するため、もし FSFS リポジトリに対してたくさんのコミットが発生する場合、書き込みロックを待つ他のプロセスがどんどん蓄積されてしまう可能性がある。
  • コードの正確さ
    • 新しい実装なので。
    • ただし2006年2月現在のSubversionは1.3.0。新しいとは言わないだろう。


Notice

このドキュメントは無保証です.
This document has no warranty.


Comment Please!

No comment. コメント/Subversion?

Name:

Counter: 744, today: 1, yesterday: 0

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Counter: 744, today: 1, yesterday: 0
Last-modified: Sun, 10 Sep 2006 13:59:05 GMT (4116d)
Powered by XOOPS Cube The XOOPS Project / all rights are reserved by Akihiko Shirai / XOOPS Cube
Theme Designed by OCEAN-NET