【ソフトウェア開発】SVNを導入した件について【ファイル管理】

チョコミン党党首のmizkyです。subversionと呼ばれるファイル管理ソフトを導入してみたので紹介します。

複数人でソースコードとかいじるときに便利なのでおすすめ。

1. subversionってなにができるん?

グループでソフトウェア開発するとき、たくさんのバージョンができて統合作業がクッソめんどくさくなります。

これをできるだけ容易にするためにファイル管理ソフトを使います。

下記にsubversionを使用したソフトウェア開発の流れを示します。

ソフトウェア開発の流れ

ソフトウェアには開発段階に応じたバージョンがあり、ベースとなるソフトウェアを基にそれぞれの開発者が別々に開発を進めます。

好き勝手に開発を進めて、納期間近に統合しようとすると大きな手戻りが発生する恐れがあるので、仕様が固まった個所からこまめに統合作業をすることが重要です。

subversionは、サーバーにあるVer001のソフトウェアをダウンロードしたり、ローカル環境で開発したVer001.a2をサーバーに反映することができます。

2. subversionの環境を構築しよう

subversionを使用するにはまずサーバーが必要になるので、レンタルサーバー等で用意しましょう。

サーバーのOSはlinux系なら基本同じかと思います。自分はCentOS6で環境を構築しました。

まずは初めに サーバーのベース機能を構築するために Apacheをインストールします。

su
yum install -y httpd

自動起動の設定もしておきます。

/etc/init.d/httpd start
chkconfig httpd on

次にSubversionをインストールします。

yum install subversion

次にリポジトリを作成します

mkdir -p /home/svn/repos/test
svnadmin create /home/svn/repos/test

次はリポジトリの編成とソースの追加です。

svn mkdir file://localhost/home/svn/repos/test/trunk -m "create"
svn mkdir file://localhost/home/svn/repos/test/branches -m "create"
svn mkdir file://localhost/home/svn/repos/test/tags -m "create"
mkdir -p /tmp/test
svn import /tmp/test file://localhost/home/svn/repos/test/trunk -m "import trunk branches and tags."

次はタグの作成とブランチの作成をしておきます。

svn copy file://localhost/home/svn/repos/test/trunk file://localhost/home/svn/repos/test/tags/release-1.5 -m "Release 1.0"

次はクライアントからアクセスするための設定をします。まずはmod_dav_svnを導入しましょう。

yum install mod_dav_svn

apache2用のsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)を以下のように書き換えましょう。

ファイルがない場合は新規に作成します。

<Location /svn/test>
    DAV svn
    SVNPath /home/svn/repos/test
</Location>

そしてApacheプロセスがリポジトリにアクセス(読み込み・書き込み)ができる様にパーミッションを変更し、apache2を再起動します。

chown -R apache:apache /home/svn/repos/test
/etc/rc.d/init.d/httpd restart

ここまで出来たらブラウザで、http://localhost/svn/test/ にアクセスすると、リポジトリが表示されます。

ただ、情報が駄々洩れになるので認証機能をつける必要があります。

home/svn/repos/test/authzsvn.confを新規作成し、以下の様に書いてください。

[groups]
developers = dev1, dev2
manager = dev1
[/]
@manager = rw
[test:/trunk]
@developers = rw
[test:/branches]
@manager = rw
[test:/tags]
@manager = rw

dev1とdev2という開発者がおり、dev1は管理者です。管理者はすべてのファイルを読み書きでき、開発者はtrunkのみ読み書きできます。

また、パスワード認証もつけたいのですよね。下記のコマンドで設定できます。

/usr/bin/htpasswd -c /home/svn/repos/test/.htpasswd dev1

authzsvn.conf で設定した内容やパスワード認証を反映するにはapache2用のsubversion設定ファイル(/etc/httpd/conf.d/subversion.conf)を以下の様に書き換えます。

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn/test>
    DAV svn
    SVNPath /home/svn/repos/test
    AuthzSVNAccessFile /home/svn/repos/test/authzsvn.conf
    Satisfy Any
    Require valid-user
    AuthType Basic
    AuthName "Subversion repository(test)"
    AuthUserFile /home/svn/repos/test/.htpasswd
</Location>

これでサーバーの設定は完了です。下記のコマンドでapache2を再起動してください。

/etc/rc.d/init.d/httpd restart

3. subversionクライアントの導入

下ごしらえができたので使ってみましょう。

subversionサーバーに接続するにはクライアントを使うのが便利です。ここからどうぞ。

言われるがままにインストールすれば大丈夫です。

次に自分のPCにsubversionサーバーからダウンロードする領域を用意します。まあどこでもいいです。適当に作って「SVN」とか名前つけとけばいいんじゃないですかね。

その用意した領域をエクスプローラで開き、右クリックすると上画像のような感じになると思うので「SVN Checkout…」をクリックしてください。

そのあとはサーバーのIPとsvn/の後ろに「test」と入力し、さっき作った領域の場所を入力し、OKを押します。

するとユーザ名とパスワードを聞かれるのでユーザ名「dev1」と設定したパスワードを入力しましょう。

上のようなフォルダができれば成功です。

trunk内部にソースコードを保存していきましょう。

4. subversionクライアントの使い方

大体updateとcommitの2つの機能しか使いません。

update機能はサーバーにある仕様FIXしたデータを自分のローカル領域にダウンロードします。

commit機能は自分が編集した仕様FIXデータをサーバーにアップロード(反映)する機能です。

commitでバグデータを仕込んでしまうと関係者に迷惑をかけるので慎重にしましょう。

注意点としては、フォルダやファイルを削除する際は、Delete Keyで行わず、右クリックでTortoiseSVN→Deleteでやってください。

updateしたときにサーバーとローカルのフォルダ構成が不一致になってエラーが起こります。

以上がsubversion環境の構築から使い方まででした。

使い慣れると超便利ですのでぜひ使ってみてください。

コメント

タイトルとURLをコピーしました