16/04/2006 | jiangws2002 BlueSkyNet – Subversionの構築からVisual Studioからの利用方法まで: 本ページでは、複数の開発者が共同で開発している組織には、必需システムである「バージョン管理システム」の構築から利用方法までの説明を行います。 Subversionの紹介「バージョン管理システムって何?」「使うの何がいいの?」といった話から説明いたします。 バージョン管理システムについてこれについては、噛み砕いて言うと、「開発(製作)過程において、その時々に開発(制作)された産物を保存し順次管理してくれる」システムです。 例えば、これが共同で開発しているところでしたら、効率よい管理効果を出します。 例えば、あるプロジェクトには、あるプログラムを生成するために、ソースコードAとソースコードBがあるとします。Aさんはプロジェクトファイルからソー スコードAを、BさんはプロジェクトからソースコードBを開発するとします。これをビルド(ここのプログラムをコンパイルして、一つのプログラムを生成す ると思ってください) するためには、ソースコードAとソースコードBが必要です。人の手でビルドするためには、ソースコードAとソースコードBの更新箇所をAさんとBさんが相 談して、必要なファイルをコピーするなどしてそろえないとビルドできません。 こ れをバージョン管理システムを使うと、いつでもソースコードAとソースコードBの最新のバージョンをボタン一つで取得することができ、ビルドできます。ま た、あるバージョンのソースコードAを二人で開発している場合、バージョン管理システムは「マージ(「溶け込ませる、合流する」の意)」と呼ばれる、ソー スコードの合併をしてくれます。。もし「コリジョン(「衝突」の意)」といわれる、開発者がソースコードの同じ場所を開発して、どうマージしていいかわか らない場合などを通知してくれます。また、ある開発者がソースコードAを開発する場合、「ロック」をかけて、他の開発者が開発できないようにするなどの機 能があります。 また、「ブランチ」といった枝分かれしたエディションの開発もサポートしており、開発の過程に沿ったバージョンの管理をしてくれます(他にも機能あります。) 「俺は個人で開発しているので、必要ない」って人もいらっしゃると思います。 私も以前まで、たいした重要性を認識しておりませんでしたが、それは間違いでした。単独開発でSubversionのお世話になった体験を挙げます。 プログラムの修正に失敗し、前のソースコードが必要になった。(または、間違って必要なファイルを消してしまった) 人間どうしても間違いはつき物です。時には必要なファイルを消してしまったり(私がへなちょこなだけかも知れませんが…(^^;))、修正した方法 が良くなくて、前のソースに戻りたいときなど、バックアップを取っていれば大丈夫なのでしょうが 常にとっているとは限りません。バージョン管理システムを使うと、その失敗はなくなりました。 仕 事場と家とネットワーク経由でソースコードを管理できるようになった。 仕事と家とはセキュアなネットワークを構築しています。仕事場と家からアクセスできるサーバにバージョン管理システムを構築して、ソースコードを取得 できるようにしているので、USBメモリなど紛失しやすいメディアへ管理する手間や危険を解消することができました。(手間の解消には Subversion関連のAdd-inソフトを使っています。後述に記述していますのでご覧ください。) とまぁ、バージョン管理システム自体には生産性はありませんが、その向上につながることをご理解いただけたと思います(たぶん)。 バージョン管理システムの種類についてバージョン管理システムでは、CVSが有名です。 ただ、広く使われるにしたがって問題が明確になったため、次世代バージョン管理システムにSubversionが広がりつつあります。Microsoft社からVisual SourceSafeが発売されていますが、初期バージョンは不具合が多かったのですが、今はなかなか使えるものだそうです。Visual SourceSafeを使うメリットは、なんといってもVisual Stdioからバージョン管理できることでしょう。しかし、後述に述べるアドインソフトでSubversionをVisual Stdioから利用できるようになりましたので、必要性がないため私はよく知りません。 Subversionの構築方法本ページでは、Windows上でSubversionを構築する方法について説明し、Linuxには触れませんが、設定内容は同様ですので、理解のお役に立ててください。 マシン Dell Inspiron 4150 OS WindowsXp + ServicePack2 Subversionを構築する方法は2種類あります。 Subversionのデーモンを利用する方法 (Apacheを起動しない分動作が軽く設定が簡単です。SSH経由でも利用できます。) Apache2+Subversionを利用する方法 Apache2+Subversionの構築方法Apache2はインストールされているとします。 インストールされているApache2のフォルダにはbin/httpd.confファイルがあり、Apache2の設定が記述されています。 Subversionのデーモンを利用する方法 リポジトリの作成 svnadmin create d:SVNRepositoryProjectA リポジトリのアクセス権の設定 リポジトリ内のconfフォルダ内にあるsvnserve.confの設定を行います。 [general] anon-access = none auth-access = write password-db = password.conf リポジトリにアクセスするために認証を設ける場合は、同様にconfフォルダ内にpassword.confを作成します。 password.confファイルはUserID = Passwordというフォーマットで登録します。 [users] hiro =hirotan pam = pamelah サーバー(デーモンプログラム)の起動 svnserve.exe -d -r d:SVNRepository (OS再起動の度に起動しないといけないので、EntryServiceでサービスに登録することをお勧めします) リポジトリへのURL svn://localhost/ProjectA Apache2+Subversionの構築 Apache2インストールフォルダbin/httpd.confを以下のように編集します。 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so ↓ LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #WebDavが必要なければ、不要 SVNの設定を行います。 以下を設定する前に、Apache2のモジュールフォルダ(Apache2\modules)の下にsvnというフォルダを作成し、Subversionの ページからsvn-win32-(version).zip(svn-win32-(version)_xxxx.zipというファイルは、開発用モ ジュールが組み込まれているバージョンです。今回はsvn-win32-1.2.3.zipを使用)というファイルをダウンロードします。 解凍して展開された/binフォルダ以下の*****.dllと*****.soファイルが必要ですので、適当なフォルダにコピーします。ここでは、 Apache2\modules\svnというフォルダにコピーしました。必要なモジュールをコピーした上で、以下の設定を行います。 #LoadModule proxy_html_module modules/mod_proxy_html.so #LoadModule xmlns_module modules/mod_xmlns.so #LoadModule proxy_xml_module modules/mod_proxy_xml.so #///// 以下をSubversionのため追加/////////////////////////////////////////// LoadModule dav_svn_module modules/svn/mod_dav_svn.so #LoadModule authz_svn_module modules/svn/mod_authz_svn.so #詳細な認証が必要なければコメントアウトしてください。 <Location /svn> DAV svn SVNParentPath "D:SVNRepository" #SNVリポジトリという、バージョン管理用フォルダの先を指定します。ここではD:SVNRepositoryを指定します。 Order allow,deny allow from all #ベーシック認証を行います。認証を設ける必要がある場合は以下をコメントアウトしてください。 #AuthType Basic #AuthName "Subversion repository " #AuthUserFile "D:SVNRepositorypassword.conf" #パスワードを記述するファイル名 #Require valid-user </Location> #///// ここまで追加 //////////////////////////////////////// また、XAMMPをお使いの方は、上記の下に、以下の内容があるので、コメントインします。 <IfModule mod_dav.c> <IIfModule mod_dav_fs.c> # 以下をコメントイン # Include conf/moddav.conf #WebDavの設定が別ファイルに設けられていますが、ここでは使用しません。 <I/IfModule> <I/IfModule> これでApache2の設定は完了です。お疲れ様でした。 TortoiseSVNのセットアップTortoiseSVNはリポジトリの構築、リポジトリへのインポート、エクスポート、アップデート、コミットなどの操作をMicrosoft社のエクスプローラ上で行うことができるようにするアドインソフトです。 詳しくは、TortoiseSVN ユーザガイドをご覧ください。 ここでは、Subversion機能を利用するためのトポロジーの構築のみについてご説明します。まず、Tigris.orgからTortoiseSVNをダウンロードします。ダウンロードするファイルは、TortoiseSVNの本体と言語ファイルをダウンロードし、順にインストールしてください。インストール後に再起動してください。 再起動後に、エクスプローラを起動してください。ポップアップメニューにTortoiseSVNのメニューが追加されます。 TortoiseSVNの日本語化TortoiseSVNを日本語化します。[TortoiseSVN]-[Settings]をクリックしてください。 [Language:]から[日本語]を選択して、[OK]をクリックしてください。 Subversionリポジトリを作成する次 にリポジトリを作成します。リポジトリは、バージョン管理したいプロジェクトを保存するためのフォルダです。上記で設定したSVNリポジトリのフォルダ (d:\SVNRepository)以下にプロジェクトごとにリポジトリを作成します。ここでは、ProjectAフォルダにリポジトリを作成します。 「Native Filesystem(FSFS)」を選択してください。これをクリックするとリポジトリが作成されます。 リポジトリへアクセスするための認証を設ける現状では、リポジトリのURLに問い合わせれば誰でもリポジトリを参照することができる。これは好ましくないため、ApacheのBASIC認証を用いて、認証機構を設けます。 認証に用いるIDとパスワードは、Apache2のhtpasswdコマンドを使って暗号化してファイルに記録することができます。 以下の例では、パスワードファイルをpassword.confとし、hiroというアカウントを作成しています。IDに対するパスワードはコマンドラインからhtpasswdを実行したときに入力します。 生成したpassword.confファイルは、上記で設定した場所(D:\SVNRepository)に置きます。また、上記設定でBASIC認証のコード部分をコメントアウトしてください。これで設定は完了です。 Visual StudioのSubversion利用アドインツール:AnkhSVNを使うAnkhSVNはVisual Studio2003(以下VSと略す。Visual Studio2002でも可能らしいです)でSubversionを使用するアドインソフトです。VSからSubversionを利用できます。 AnkhSVNのインストールAnkhSVNのDownloadメニューから最新バージョンのAnkhSVN(05.09.03時点でバージョン0.5.5)をダウンロードします。ダウンロードしたソフトウェアのアーカイブをダブルクリックするとインストールが始まります。 AnkhSVNの実行AnkhSVNをインストールするとVisual StudioのメニューバーにAnkhSVNのメニューが追加されます。 ここから、リポジトリへのコミット、アップデートができます。リポジトリの先を登録すれば、VSを起動時に自動アップデートされて便利です。