SVNを使うメモ
LastUpdate : 08/05/18
CVSからSVNに移行しちゃう的な雰囲気な近年、とりあえず、SVNを使って環境構築をしてみた際の、メモです。
※今回の方針として、認証・識別にはIDとパスワードのみを使います(BASIC認証)。また、snv単体での使用は、行いません。
*tracについては、helpをみながら、全部カンでやってますので、内容が正しくない箇所があるかもしれません。注意してください
SVNの環境についてですが、svn単体で動作させることが可能です(この方法だと、すぐインストールが終わります)。それでは面白くないので、apacheを使い、リポジトリ内のデータをブラウザで見れたり、Tracと連携させてみたり、とやってみます。
svnをapacheを経由して使用します。リポジトリをブラウザで閲覧できたりします。
手順として3つほどあります。
(1)必要なソフトウェアのインストール
(2)apacheの設定
(3)セキュリティーの設定
子面倒ですが、順番に行っていきます。
(1)必要なソフトウェアのインストール
yumを使い、必要なソフトウェアをインストールします。
yum install subversion mod_dav_svn
(2)apacheの設定
次に、apacheの設定を行います。yumにて、mod_dav_svnというモジュールをインストールしましたので、それの設定ファイルの編集を行います。設定ファイルは以下のパスにあります(CentOSの場合)。
/etc/httpd/conf.d/subversion.conf
これに変更を加えていきます。
<Location svn> DAV svn SVNParentPath /var/svn </Location>
とりあえず動作確認のため、上記だけを書いて、動くかどうかたしかめます。
※ ここでSVNParentPathと書いてある場所は、SVNPathと書いたりもします。ただし、SVNPathでパスを指定した場合は、リポジトリが1個しか指定できません(たぶん、リポジトリの数だけ、Locationを書いてくのかしら?)。SVNParentPathで指定を行った場合は、指定したディレクトリ以下にリポジトリを複数あることを示します・・・らしいw
そして、上で指定したディレクトリはまだ作っていませんので、これから作成をします。。
[root@svn_server svn]# cd [root@svn_server ~]# mkdir -p /var/svn/test1 [root@svn_server ~]# svnadmin create /var/svn/test1 [root@svn_server ~]# chown -R apache /var/svn/ [root@svn_server ~]# ls /var/svn/test1/ conf dav db format hooks locks README.txt [root@svn_server ~]#
リポジトリ格納用のディレクトリを作成し、svnadminコマンドで、test1をリポジトリとして作成しました。test1の中には、自動的に必要なファイルが生成されます。
では、これで、httpdを再起動させる。その後、クライアントより、ブラウザで「 http://SVNサーバのアドレス/svn/test1/ 」にアクセスします。apache経由でSVNにアクセスする場合、標準の80番ポートを使用するので、WWW用のポートをOPENの状態にしておいてください。
このよーな画面が表示されるはずです。
(3)セキュリティーの設定
とりあえず、(2)で、リポジトリにアクセスできるようにはなっていますが、セキュリティーの設定がまだ済んでいません。当初の方針通り、BASIC認証のみを取り扱います(というか、それ以外、やったことがないので、わかりません)。
アクセス方法の設定なので、設定ファイルを変更します(/etc/httpd/conf.d/subversion.conf)。
/etc/httpd/conf.d/subversion.conf |
<Location /svn> DAV svn SVNParentPath /var/svn SVNListParentPath on AuthType Basic AuthName "Subversion Repository" AuthUserFile /var/svn/users Require valid-user </Location> |
これら三つを書き加え+Require項目の書き加えで、とりあえず、書き換えは完了です。
上記のsubversion.confのユーザ・パスワードファイルは/var/svn/usersというファイルを使うことを指定したので、このusersというファイルを作成します。usagiとnekoというユーザ2人が登録されているファイルを作成します。
[root@svn_server svn]# pwd /var/svn [root@svn_server svn]# htpasswd -c -m users usagi New password: Re-type new password: Adding password for user usagi [root@svn_server svn]# htpasswd -m users neko New password: Re-type new password: Adding password for user neko [root@svn_server svn]# |
htpasswdに-cオプションを作ると、ファイルを生成します(既存のファイルはたぶん、削除されてしまった気がした)。追記していく場合は-cをはずします。-mオプションをつけるとパスワードがMD5形式になります。
上記の、subversion.confとパスワードファイルの作成が完了したならば、apacheを再起動させます。
これで、設定は完了です。htpasswdで作成したユーザ名・パスワードでアクセスができるはずです。
tracについては、以下のサイトを参照してください。
http://trac.edgewall.org/
最近はやりの、svn+tracに挑戦してみたいと思います。
方針としては、trac + apache&python_module + SqLiteで、動作させたいと思います(たぶん、これが一般的な気がしないでもなくもない)。
インストール手順と、設定手順に分かれています。
(1)インストール手順
(2)設定手順
(3)認証・識別の追加
(4)ブラウザからソースをみたら、日本語が文字化けする場合
必要なライブラリ・プログラムと、「yum list installed|grep プログラムの名前」なんかをやって、何が足りないのか、指定されたバージョンを満たしていないのかを、探していましたが、yumにてリポジトリを追加してやれば、yumでインストールできるらしいです。導入のめんどくささがネックなtracですが、これはかなりすばらすぃ。
そのリポジトリの追加についての記述は、「 http://trac.edgewall.org/wiki/TracInstallPlatforms 」に書かれています(それぞれのディストリビューションについて、インストール方法が記述されています)。
この中で、CentOSの記述はないですが、私の使っているCentOSは5.1なので、RHEL5のところを見てみます。
RPMforegを使えるようにして、yum install tracをすると、インストールができるんだよー、っと書いてあります。なので、とりあえず、PRMforgeのリポジトリをyumの設定ファイルに追加します。
あなたの、ディストリビューション・アーキテクチャに合った最新のrpmforge-release packageをインストールしてね、と書いてあるので、それに従います。私の環境はCentOS5.1の64Bit版なので、たぶん、RHEL5の64Bit版でOKなはず。っということで、それをインストールする。
[root@svn_server ~]# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm 〜〜〜 中略(入力が長いと表示が崩れるため、コピペできなかったw 〜〜〜 warning: /var/tmp/rpm-xfer.qxqipX: Header V3 DSA signature: NOKEY, key ID 6b8d79e6 Preparing... ########################################### [100%] 1:rpmforge-release ########################################### [100%] [root@svn_server ~]#
ワーニングがでていますが、なんのことやら分からないので、気にしない方向で(ぉ
また、キーのインポートは手動で行う必要はないらしいです(「 This will automatically install the configuration and GPG keys that are for safely installing RPMforge packages. 」って書いてある)
さて、これにて、yumのリポジトリが追加されてはずです(/etc/yum.repos.d/rpmforge.repo というファイルが出来る)。
しかし、RPMforgeは、それらのプログラムをインストールすると、既存のyumでインストールしているプログラムなんかを上書きしてしまったりなど、なにかしら不具合が起きる可能性があるため、通常運用では、OFFにするらしいですよ?。
そのため、現状ではONになっているので、必要な場合のみ使うようにするため、OFFにしておきます。
/etc/yum.repos.d/rpmforge.repo # Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag # URL: http://rpmforge.net/ [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag #baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge #enabled = 1 enabled = 0 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 1
enabledのところを1から0に変更しています。
さてはて、これで、準備が整ったため、yumでtracをインストールします。先ほど作業したRPMforgeはOFFにしてしまったため、使うように指示します(「--enablerepo=rpmforge」を付け加える)。
[root@svn_server ~]# yum --enablerepo=rpmforge install trac 〜〜〜 長いので中略 〜〜〜 Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: trac noarch 0.10.4-1.el5.rf rpmforge 768 k Installing for dependencies: clearsilver x86_64 0.10.4-2.el5.rf rpmforge 296 k python-clearsilver x86_64 0.10.4-2.el5.rf rpmforge 233 k Transaction Summary ============================================================================= Install 3 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 1.3 M Is this ok [y/N]: y Downloading Packages: (1/3): python-clearsilver 100% |=========================| 233 kB 00:05 (2/3): clearsilver-0.10.4 100% |=========================| 296 kB 00:06 (3/3): trac-0.10.4-1.el5. 100% |=========================| 768 kB 00:25 Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: clearsilver ######################### [1/3] Installing: python-clearsilver ######################### [2/3] Installing: trac ######################### [3/3] Installed: trac.noarch 0:0.10.4-1.el5.rf Dependency Installed: clearsilver.x86_64 0:0.10.4-2.el5.rf python-clearsilver.x86_64 0:0.10.4-2.el5.rf Complete! [root@svn_server ~]#
っという感じになるはずです。
[root@svn_server ~]# trac-admin /var/trac/testproject initenv 〜〜〜 長いので中略 〜〜〜 Project Name [My Project]> testproject 〜〜〜 長いので中略 〜〜〜 Database connection string [sqlite:db/trac.db]> 〜〜〜 長いので中略 〜〜〜 Repository type [svn]> svn 〜〜〜 長いので中略 〜〜〜 Path to repository [/path/to/repos]> /var/svn/test 〜〜〜 長いので中略 〜〜〜 Templates directory [/usr/share/trac/templates]> 〜〜〜 長いので中略 〜〜〜 --------------------------------------------------------------------- Project environment for 'testproject' created. You may now configure the environment by editing the file: /var/trac/testproject/conf/trac.ini If you'd like to take this new project environment for a test drive, try running the Trac standalone web server `tracd`: tracd --port 8000 /var/trac/testproject Then point your browser to http://localhost:8000/testproject. There you can also browse the documentation for your installed version of Trac, including information on further setup (such as deploying Trac to a real web server). The latest documentation can also always be found on the project website: http://trac.edgewall.org/ Congratulations! [root@svn_server ~]# |
[root@svn_server ~]# tracd --port 8000 /var/trac/testproject/ |
<Location "/projects/testproject"> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/trac/testproject PythonOption TracUriRoot /projects/testproject </Location> |
[root@svn_server trac]# pwd /var/trac [root@svn_server trac]# htpasswd -c -m htpasswd neko New password: Re-type new password: Adding password for user neko [root@svn_server trac]# htpasswd -m htpasswd neko New password: Re-type new password: Updating password for user neko [root@svn_server trac]# |
<LocationMatch "/projects/[^/]+/login"> AuthType Basic AuthName "Trac" AuthUserFile /var/trac/htpasswd Require valid-user </LocationMatch> |
[root@svn_server trac]# trac-admin /var/trac/testproject/ permission list User Action -------------------------- anonymous BROWSER_VIEW anonymous CHANGESET_VIEW anonymous FILE_VIEW anonymous LOG_VIEW anonymous MILESTONE_VIEW anonymous REPORT_SQL_VIEW anonymous REPORT_VIEW anonymous ROADMAP_VIEW anonymous SEARCH_VIEW anonymous TICKET_CREATE anonymous TICKET_MODIFY anonymous TICKET_VIEW anonymous TIMELINE_VIEW anonymous WIKI_CREATE anonymous WIKI_MODIFY anonymous WIKI_VIEW Available actions: BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY, MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW [root@svn_server trac]# |
とりあえず、上記で追加したnekoに管理者権限を与えます。
[root@svn_server trac]# trac-admin /var/trac/testproject permission add neko TRAC_ADMIN [root@svn_server trac]# trac-admin /var/trac/testproject/ permission list User Action -------------------------- anonymous BROWSER_VIEW anonymous CHANGESET_VIEW anonymous FILE_VIEW anonymous LOG_VIEW anonymous MILESTONE_VIEW anonymous REPORT_SQL_VIEW anonymous REPORT_VIEW anonymous ROADMAP_VIEW anonymous SEARCH_VIEW anonymous TICKET_CREATE anonymous TICKET_MODIFY anonymous TICKET_VIEW anonymous TIMELINE_VIEW anonymous WIKI_CREATE anonymous WIKI_MODIFY anonymous WIKI_VIEW neko TRAC_ADMIN Available actions: BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY, MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW [root@svn_server trac]# |
trac-admin <tracのファイルの場所> permission remove <ユーザ名前> <権限>※上記のnekoを「 trac-admin /var/trac/testproject/ permission remove neko TRAC_ADMIN 」とすると、nekoがいなくなります。
例 → trac-admin <tracのファイルの場所> permission remove neko TICKET_ADMIN
また、ユーザ名・権限のところに*を指定可能。*を指定した場合、すべてを意味する(ユーザの場合、全ユーザ、権限の場合、全権限)
#<LocationMatch "/projects/[^/]+/login"> <LocationMatch "/projects/testproject"> AuthType Basic AuthName "Trac" AuthUserFile /var/trac/htpasswd Require valid-user </LocationMatch> |
default_charset = iso-8859-15という記述がありますので、この文字セットを(たとえば、Windows版Eclipseを使っている場合MS932となっていると思います。ほぼshift_jisと正しくマップされていたと思ったので、まぁ・・・通常は問題なかろーと・・・)
default_charset = shift_jisに置き換えます。
Ticketの登録画面は以下のような感じです。
こんな感じで、選択可能な箇所が5個ほどあります。それぞれの分類用に作ってある様子ですが、プロジェクトごとに独自のポリシーをもって運用していくんじゃなかろーかと思います。
で、そのときに、任意にそれぞれのコンボボックスの内容を追加したり削除したいわけです。Type , Priority , Milestone ,
Component , Version のそれぞれのコンボボックスの選択項目の追加・削除について、書いています(実際に私がやってみた方法)。
「 trac-admin --help 」とやると、コマンドの例がでます。基本的にこれをみてやってます。
*対象のtracのプロジェクトのパスを /var/trac/testproject とします。
svnをEclipseより使用するためのプラグインの一つとして、subclipseというプラグインがあります。詳細は以下のページを見てください。
http://subclipse.tigris.org/
上記アドレスのサイト内に画面キャプチャつきのわかりやすいインストール方法がありますので、基本的にこれをみていれば、間違いないです(アドレス → http://subclipse.tigris.org/install.html)。
ただし、このページ内にも記述されていますが、使用しているEclipseのバージョンによって、インストールするプラグインのバージョンが異なります。使用しているEclipseのバージョン(サードパティにより拡張されたものを使っている場合は、ベースにしているEclipseのバージョンをみればいいのではと・・・)をあらかじめ調べておく必要があります。
さて、私が使っているのはEclipse3.3.2なので、subclipseは1.2系をインストールすることになります。
プラグインのインストール方法は普通のEclipseのプラグインインストール方法と同じです。
メニューから [ヘルプ]→[ソフトウェア更新]→[検索とインストール] より、[インストールする新規フューチャーを検索]を選択し、「新規リモート・サイト」ボタンを押下し、出てきたダイアログにて、名前は好きな文字を入力し(subclipseとかわかりやすいのが、やっぱり無難)、URLに、「 http://subclipse.tigris.org/update_1.2.x 」を入力し「OK」ボタンを押下します。
これで、一覧にSubclipseという項目が加わったはずです。チェックボックスにチェックがついているかを確認し、「終了」ボタンを押下します。
すると、次の画面で、Subclipseのどのモジュールをインストールするのか、選択を求められます。「Subclipse Plugin」と「Integrations」がありますがIntegrationsのほうはオプションです。
こんな感じで、Eclipse用のプラグインのみ、インストールを行わせます(「次へ」ボタンを押す)。
すると、ダウンロードが開始され、しばらく待つと、署名されてませんがインストールしますか?的なメッセージがでてきます。ここで、しないを選択すると、悲しいことになるので、とりあえず、インストールします。この署名警告について、http://subclipse.tigris.org/install.htmlのStep9にてふれられています。
そして、Eclipseが再起動をし、インストール完了です(一応、再起動するかしないか問い合わせダイアログはでてきますが)。
これで、SVNをEclipseより使えるようになりました。Subclipseのパースペクティブを開いて使用します。[ウインドウ]→[パースペクティブを開く]→[その他]より、「SVNリポジトリー・エクスプローラ」を選択すれば、パースペクティブが開きます。
※svnサーバにアクセスしようとしても、接続が出来ない場合・・・!
サーバ側のファイヤーウォールの設定を確認する(apache経由ならば80番ポートがOPENになっているかどうかを確認する)。
マシンにインストールしているファイヤーウォールの設定を確認する。eclipseの外部との通信を拒否設定になっていないか確認を!!(←これで、ハマったw