2008年01月16日

Subversionでバージョン管理(まとめ)

SubversionとTracをサブドメインで運用するのを凡ミスでつまずいていたので修正。
ssl.confでNameVirtualHost *:443の設定をしてなかっただけでした。

Subversionのリポジトリ作成から、リポジトリへのTrac導入までを一連の流れで。

PHP5とPythonが同居しているとSQLiteでエラーが出てしまうので、TracではPostgreSQLを使用する。
この回避方法は、PHP5のSQLiteモジュールを無効化するか、Tracをmod_pythonで動作させない、またはTracで使うデータベースをSQLite以外を使用する。

つまり、Tracで使うデータベースとしてPostgreSQLを使うことになる。
また、サーバ・クライアント間の通信を暗号化したいのでSubversionとTracの公開にSSLを使用する。

ここでの環境は次の通り。

・Subversion導入済み
・Trac(日本語版)導入済み
・PostgreSQL導入済み
・PostgreSQLのpg_hda.con設定済み
・PostgreSQLにTracからのアクセスで使用するユーザ追加済み
・pyPgSQL導入済み
・SubversionクライアントはMac用のSCPluginを使用する
・Mac側にMacPortsかFinkでSubversionを導入済み

1)Subversionのリポジトリを作成する。

まず、SubversionとTracを運用するディレクトリを決める。
今回は、/home/projects/project-name/svnをSubversionのディレクトリ。
/home/projects/project-name/tracをTracのディレクトリとする。

mkdir /home/projects/project-name/svn

svnadmin create /home/projects/project-name/svn

作成したリポジトリに、次のディレクトリを新規作成する。

・trunk
進行中のプロジェクトそのもの。

・branches
進行中のプロジェクトから派生した、進行が止まっていないプロジェクト。
例えば、Ver.1リリース後Ver.2の開発にtrunkは移行したが、Ver.1のメンテナンスは継続して行う場合など。

・tags
進行が止まったプロジェクト。リリースした時点での保存。

svn mkdir file://localhost/home/projects/project-name/svn/trunk -m "trunkの新規作成"
svn mkdir file://localhost/home/projects/project-name/svn/branches -m "branches
の新規作成"
svn mkdir file://localhost/home/projects/project-name/svn/tags -m "tags
の新規作成"

2)SubversionのリポジトリをWebDAV方式(mod_dav_svn)で公開する設定を作成する。

Apacheのconfファイルを編集する。

sudo vi /etc/httpd/conf.d/subversion.conf

最下行に次のLocationを追加。
サブドメインでの運用に変更。ピンクの文字の方で。

本当はバーチャルホストで運用したいけど、なぜだかエラーが出てくるので調べて、それからにする。

<Location /project-name-svn>
DAV svn
SSLRequireSSL
SVNPath /home/projects/project-name/svn

# access policy
AuthzSVNAccessFile /home/projects/project-name/svn/conf/authz

Require valid-user
AuthType Basic
AuthName "Subversion repository -project-name"
AuthUserFile /home/projects/project-name/svn/conf/.htpasswd
</Location>

<VirtualHost *:443>
ServerName svn.yourserver

<Location /project-name-svn>
DAV svn
SVNPath /home/projects/project-name/svn

# access policy
AuthzSVNAccessFile /home/projects/project-name/svn/conf/authz

SSLRequireSSL

Require valid-user
AuthType Basic
AuthName "Subversion repository -project-name"
AuthUserFile /home/projects/project-name/svn/conf/.htpasswd
</Location>
</VirtualHost>

リポジトリを増やすには、Locationを増やしていく。

svnコマンドやFinderを使った接続では問題ないが、Webブラウザからの接続だと動作がおかしい。
オレオレ証明書の確認、ベーシック認証と来て、認証後になぜかhttps://〜の接続からhttp://〜の接続にされてしまう。
設定ファイルの問題だろう。動作に問題は見られない。

リポジトリ内のディレクトリをユーザまたはグループ毎に管理するため、/home/projects/project-name/svn/conf/authzファイルを編集する。

vi /home/projects/project-name/svn/conf/authz

authzの内容は下記のように。
将来的に人が増えるかもしれないことを仮定して、管理者と開発者に分類。今のところは自分のみなので、ユーザは一人。ユーザを増やすときは、manager = hoge, hoge2のように記述する。

[groups]
###
###
グループ設定
###
#
管理者
manager = hoge

#
開発者
developers = hoge

###
###
アクセスの設定
###
#
すべてのリポジトリをすべてのユーザにreadを許可
[/]
* = r

# trunk
リポジトリをdevelopersグループに所属するユーザにread/writeを許可
[/trunk]
@developers = rw

# branches
リポジトリをmanagerグループに所属するユーザにread/writeを許可
[/branches]
@manager = rw

# tags
リポジトリをmanagerグループに所属するユーザにreadを許可
[/tags]
@manager = r

ここまでできたら、ベーシック認証のパスワードファイルを作成する。

htpasswd -c /home/projects/project-name/svn/conf/.htpasswd hoge
New password:
Re-type new password:
Adding password for user hoge

これで、WebDAV方式を使ったSubversionの設定は完了。
rootなりsudoして、Apacheを再起動してブラウザでアクセスしてみる。

service httpd restart

Apacheの再起動が完了したら、ブラウザでhttps://yourserver/project-name-svn/でアクセスする。
おそらく、パスワード認証を求められるだろう。
SSL以外のアクセスを拒否するかどうか、http://yourserver/project-name-svn/でもアクセスしておくと良い。

3)Tracで使用するデータベースを作成する。

PostgreSQLユーザになり、Tracで使用するデータベースを作成する。
運用上のルールとして、Tracで使用するデータベースはtrac-を前置詞として持つことにする。

su - postgresqlusername

PostgreSQLユーザになったなら、tracで使用するデータベースを作成する。
TracからPostgreSQLを使うためのPostgreSQLユーザ名は、tracとして作成済みとする。

createdb --owner trac -E UTF-8 trac-project-name

作成したデータベースのオーナーはtrac。
また、データベースの文字コードとして、Tracで使うUTF-8を指定。
作成したデータベース名はtrac-project-nameである。

4)SubversionのリポジトリにTracを設定する。

上で決めたことだが、Tracの運用ディレクトリは/home/projects/project-name/tracをTracのディレクトリなので、まずは作成する。

mkdir /home/projects/project-name/trac

ディレクトリが作成できたら、Tracを設定する。

trac-admin /home/projects/project-name/trac initenv

Tracの設定ウィザードが表示されるので、順を追って設定していく。

プロジェクト名を設定する。後からでも変更できるらしい。

Project Name [My Project]> プロジェクト名

次に、データベースの設定。
もちろん、3で作成したPostgreSQLのデータベースを設定する。
「postgres://PostgreSQLで使用するユーザ名@接続先/データベース名」と設定。

Database connection string [sqlite:db/trac.db]> postgres://trac@localhost/trac-project-name

次にリポジトリタイプ。ここはエンターキーを押して次へ。

Repository type [svn]>

リポジトリタイプをとばしたら、リポジトリまでのパスを設定する。
2までに設定したリポジトリパスを絶対パスで設定する。

Path to repository [/path/to/repos]> /home/projects/project-name/svn

次に、Tracで使用するテンプレートの設定だが、ここもエンターキーを押して次へ。
正常に完了すると、Congratulations!と祝ってもらえる。
万がいち祝ってもらえないときは、エラーを読み返してやり直す。

5)Tracの公開設定をする(mod_pythonを使用)。

Apacheの設定を行い、Tracの公開設定を行う。

sudo vi /etc/httpd/conf.d/trac.conf

最下行のところに、次のLocationを追加する。

こちらもサブドメインでの運用に変更する。

<VirtualHost *:443>
ServerName trac.yourserver

Alias /project-name-trac /usr/share/trac/htdocs/trac.cgi

<Location /project-name-trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/projects/project-name/trac

SSLRequireSSL

Require valid-user
AuthType Basic
AuthName "Trac"
AuthUserFile /home/projects/project-name/svn/conf/.htpasswd
</Location>
</VirtualHost>

<Location /project-name-trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/projects/project-name/trac

SSLRequireSSL

Require valid-user
AuthType Basic
AuthName "Trac"
AuthUserFile /home/projects/project-name/svn/conf/.htpasswd
</Location>

Tracを増やすときはAliasから</Location>までを増やしていく。

こちらもSSL通信を行うことにした。
認証は、Subversionの認証と同じものを使う。

ここまで出来たら、1度Apacheを再起動してアクセスしてみる。

service httpd restart

きちんとアクセスできるようなら、tracの設定ファイルを編集していくつか修正する。

vi /home/projects/project-name/trac/conf/trac.ini

ヘッダ部分のTracロゴをクリックしたときに、example.comにとばされてしまうので、ここを変更する。

[header_logo]
link = http://yourserver/project-name-trac/

なお、4で設定したプロジェクト名の変更もtrac.iniを編集することで変更できる。

[project]
name =
プロジェクト名

を編集すれば良い。
それでは、TracディレクトリとSNVディレクトリのオーナーを適切なものにする。

sudo chown -R apache:apache /home/projects/project-name/trac

sudo chown -R apache:apache /home/projects/project-name/svn

ここまでで、一連の作業は完了。

6)SCPluginでリポジトリにアクセスする。

リポジトリとやりとりするフォルダを、任意の位置に新規作成する。
フォルダ内で右クリック(またはcontrol+左クリック)をする。

さっそくSCPluginを使ってリポジトリにアクセスしたいわけだが、残念ながら現バージョンのSCPluginでは「オレオレ証明書」だとServer certificate verification failedとなってしまい、アクセスできない。

しかしながら、面倒をひとつ挟むことで解決する。
TerminalからsvnコマンドでCheckoutするときに、「オレオレ証明書」の使用を訪ねられるので、Permenentlyにしておけば、そのサーバのオレオレ証明書は覚えていてくれる。

Terminalを起動する。もちろんだが、Mac上での操作だ。

後で消してしまうが、とりあえず適当なディレクトリにチェックアウトする。

svn checkout https://yourserver/project-name-svn

ここで「オレオレ証明書」を指摘されるので、Permenentlyにする。
ユーザ名とパスワードを入力して、チェックアウト。
これでSCPluginを使う準備は完了。
このディレクトリは削除して構わない。

Terminalを使うのはここまで。
Finderに戻り、再び任意の位置に作成したフォルダに戻る。

その他 > Subversion > Checkout
-を実行し、リポジトリを設定する。

Repository URL: https://yourserver/project-name-svn/

Anonymousなリポジトリではないので、Usernameを選択してユーザ名とパスワードを入力する。
RevisionはHead Revisionで構わない。

Local部分の、Checkout to:がチェックアウトしてくるフォルダになるが、通常はそのままで良い。
ここまでの設定が完了したなら、チェックアウトしてみよう。

チェックアウトが成功すれば-

・trunk
・branches
・tags

-の3つのフォルダが出来ているはずだ。
後は、CommitとCheckoutを駆使してバージョン管理していけばいい。

運用や終わったプロジェクトの閉じ方は、必要になったときに追加する。

posted by pocketsmile at 10:31| Comment(1) | Subversion | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
maroquinerie longchamps montpellier maroquinerie longchamps montpellier. Shop Longchamp Handbags | Bloomingdales.com Longchamp Handbags at Bloomingdales Buy Your Favorite …
Posted by sacs longchamps at 2013年06月14日 03:35
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。