dreamedge.net

作業コピーのリポジトリの場所を変更する

2009-01-01T10:31:00+0000
$ svn switch --relocate file:///repos file:///new-repos

リポジトリ内の異なるパスに再配置するならば

svn switch file:///repos/branches/x.x.x
このエントリーをはてなブックマークに追加
Bookmark this on Delicious

Subversionでのバージョン管理方法

2009-01-01T10:27:00+0000

いままで常に個人プログラミングだったので,バージョン管理をしたことがなかった.
ので,あまりにも基本だが,Subversionでのバージョン管理の手法を調査してみた.

  • trunk, branches, tagsについて

開発の段階に合わせてtrunk, branches, tagsというディレクトリを作成して管理する.
trunk: 最新のコード
branch: リリース用のコード 1.0.xとかの名称を付けて管理する
tag: 本番リリースのコード.branchが安定した時点で1.0.1とかして作成する.

  • subversionへの登録方法

http://svn.hoge.com/svn/repo/というリポジトリでapp/ディレクトリにあるコードを管理しようとする場合,

1. trunkに現在のコードをimportする

$ svn import http://svn.hoge.com/svn/repo/app/trunk -m 'initial import'

2. 登録したコードをworking/ディレクトリに取り出す

$ svn checkout http://svn.hoge.com/svn/repo/app/trunk working

3. branchを作成する

ある程度コードが安定してきたら,リリース用のブランチを作る

$ svn mkdir http://svn.hoge.com/repo/app/branches/
$ svn  copy http://svn.hoge.com/repo/app/trunk \

http://svn.hoge.com/repo/app/branches/1.0.x

       -m 'create a branches 1.0.x of app'

リリース時はtag/1.0.0といったディレクトリを作る.作り方はbranchと同様

4. 作業コピーをブランチに切り替える

$ svn switch http://svn.hoge.com/repo/app/branches/1.0.x

5. gonzuiにtrunkを登録する

gonzuiはrubyベースのコード検索エンジン.appのtrunkを,gonzuiに登録して検索可能にする

./gonzui-import --svn http://svn.hoge.com/repo/app/trunk app
このエントリーをはてなブックマークに追加
Bookmark this on Delicious

WebDAV経由でのリポジトリ公開@複数レポジトリ

2009-01-01T10:23:00+0000

前に書いたのはレポジトリが1つの場合の設定だった.

/var/svn/hoge, /var/svn/barといったように複数レポジトリがある場合は,dav_svn.confにSVNListParentPathを設定すると,http://hoge.com/svn/でリポジトリ一覧を表示できるようになる.

<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  SVNListParentPath on
</Location>

認証をかけたい場合は,dav_svn.authzを作成して,以下のようにAuthzSVNAccessFileの項目を設定する.

<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  SVNListParentPath on

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz

  Satisfy Any
  Require valid-user
</Location>

dav_svn.authzの書式は”[リポジトリ名:パス]”で設定するリポジトリを指定したうえで,”ユーザ名=[rw]”で各ユーザの権限を記述する.グループを指定する場合は”@グループ名”で指定する.

ユーザ名に*を指定すると任意のユーザを示すので,下の例はprivateはuser1が読み書きできるのみ.publicは誰でも読むことは可能,となる.ユーザ名はdav_svn.passwdと揃えること

[private:/]
user1 = rw
* =

[public:/]
user1 = rw
* = r

けど,この形式でのアクセス制限をかけると,せっかくSVNListParentPath onにしたのに,http://localhost/svn/でレポジトリの一覧を見ることが出来なくなってしまう.

その場合は,dav_svn.authzを使わずにLimitExceptで制限する.下のようにすることによって読み込みは誰でもできるが,書き込みにはユーザ認証が必要になる.

<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  SVNListParentPath on

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>
このエントリーをはてなブックマークに追加
Bookmark this on Delicious

WebDAV経由でリポジトリを公開する

2009-01-01T09:54:00+0000

1. apache2のsvnモジュールを入れる

# aptitude install libapache2-svn
# a2enmod dav_svn

2. apache2経由で書き込めるように権限を変更.

$ chown -R www-data.www-data /var/svn/repos

ユーザディレクトリ以下にsvnディレクトリ入れてる場合は,所有グループの変更で対処する.

$ chown -R user.www-data /home/user/svn
$ chmod -R g+w /home/user/svn

3. dav_svn周りの設定
dav_svn.confは以下のように変更する.

<Location /svn>
  DAV svn
  SVNPath /var/svn/repos
</Location>

アクセスに認証をかけるなら,以下のようにする.

<Location /svn>
  DAV svn
  SVNPath /var/svn/repos
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>
このエントリーをはてなブックマークに追加
Bookmark this on Delicious

リポジトリの作成

2009-01-01T09:42:00+0000

まずsubversionパッケージをインストールする.必須ではないが,subversion-toolsもインストールしておくと後で便利.

# aptitude install subversion subversion-tools

svnadminコマンドでリポジトリを作成する.今回は/var/svn/reposにリポジトリを作成することとする.

# mkdir -p /var/svn/repos
# svnadmin create /var/svn/repos

リポジトリを,アクセスするユーザ(サービス)の権限に変更する.通常ならば自分の権限にすればいいが,今回はapacheで公開することを考えてwww-dataの権限にする.

# chown -R www-data.www-data /var/svn/repos
このエントリーをはてなブックマークに追加
Bookmark this on Delicious