バージョン管理システムの導入に挑戦

出典: Wikimura

研究で作っているプログラムも、CANSATの基板や部品ライブラリも、多すぎて管理しきれていないし共有できていない。何とかならないものか...と悩んだ結果たどりついたのが、バージョン管理システム。サーバを立ち上げてどこからでもアクセスすることができるようにすれば、ファイル同期の手間が省けて能率アップするはず。Altiumもバージョン管理システム対応らしいし。

ここでは、バージョン管理システムの導入の過程をメモする。

目次

下調べ

Subversion発見

バージョン管理システムといえばCVSというのを聞いたことがあったが、最近ではSubversion(SVN)というのがメジャーらしい。

バイナリ版にはいくつかのディストリビュータが提供しているものがあるが、中でもVisualSVN serverは便利らしい。 サーバ設定がGUIで行えるだけでなく、Apacheもセットでインストールされるため、ブラウザからリポジトリ(バージョン管理されたファイルシステムのようなもの)を操作する機能もすぐにセットアップできるらしい。

VisulSVNはVisualStudioで使用できるSVNクライアントらしいが、こちらはシェアウェア。

日本語の資料もある。これはオライリーのSVNBookの非公式な日本語訳らしい。

Tortoise発見

フリーWindows用のSVNクライアントとして、Tortoiseというのがあることがわかった。 GUIが付いているだけでなく、Explorerのシェル拡張からも使うことができるという。 コンテキストメニューから操作できるらしい。

Subclipse発見

EclipseからSubversionを使用するためのプラグインにSubclipseがある。


VisualSVN server導入

公式サイトからバイナリを持ってきてインストーラを起動。 ポート番号やディレクトリを設定する。


Tortoise導入

こちらもインストールだけ。 再起動が求められる。

再起動後、ExplorerのコンテキストメニューからTortoiseの機能が使えるようになる。

基本操作

サーバ設定

VisualSVN serverのGUIからリポジトリを作り、ユーザやグループを作成する。 以上でOK?

パスワードファイル「htpasswd」が自動で作られる。面倒なコマンドがいらないし、暗号化もやってくれるのでありがたい。やっていることは文献[8]と同じ?

ファイル操作

  • Tortoiseをインストールすると、Explorerのコンテキストメニューが追加される
  • コンテキストメニューから、リポジトリ操作を行う「Repo-browser」が起動できる
  • Tortoiseを起動するとSVNサーバのURLを指定すると、リポジトリの中身が表示される
  • ファイルをブラウザへドラッグ&ドロップすると、リポジトリへコピーor移動することができる
  • Tortoise上でファイルを指定し、チェックアウトを選択すると、保存先を指定できる
  • 正しくチェックアウトできると、チェックマークがついたフォルダが作られる
  • チェックマークがついたファイルを編集し、変更をコミットすると本体へ反映される

こんな感じらしい。

SVNサーバはネットワーク経由で利用できるが、SVNBookによればApache + mod_dav_svnによるhttps上でのやり取りと、sshservを使ったMD5?かSSHでのやり取りがあるらしい。

Tortoiseで接続するには、SVNサーバのURLを入力する。Apache + mod_dav_svn機能を使用している場合、Tortoiseでは「https ://サーバ名:ポート番号/svn/」を指定する。

Apache + mod_dav_svnを使うと、ブラウザ上からも閲覧可能になる。「https ://サーバ名:ポート番号/svn/」をURLに入力すると、Tortoiseと同様にリポジトリを見ることができるようになる。ただし、参照ができるだけでSVNの機能は制限されるか実装されていないらしい。VisualSVNでは閲覧のみらしい。Webへの公開も認証が使える。

ただ、木村研究室ではSSHサーバが動いているので、SSHのトンネリング機能を使いたいところ。トンネリング機能は、SSHとSVNサーバが同じPCで動いていないと使えないらしい。

既にSSHでトンネリングしないと研究室内に入れないようになっているので、内部で使う分にはBasic認証の方が都合が良い?

VisualSVN serverの停止

[コントロールパネル]->[パフォーマンスとメンテナンス]->[サービス]を開き、サービス一覧から「VisualSVN server」を探す。 これは起動時に自動的に開始する設定となっている。サービスを停止して手動開始モードにすれば、サーバは停止し、次回以降の起動時からも勝手に起動しなくなる。

停止するのはmod_dav_svn付きのApacheサーバなので、コマンドラインからのSVNが使えなくなることはない。

外部からの利用

Apache + mod_dev_svnを使うことにしたため、LANからはBasic認証で認証が行われる。しかし、外部からアクセスする場合は、SSHトンネリングを使用する。

SSHクライアントのトンネリング設定で、目的地IPとポートをSVNサーバに合わせて設定する。後は「https:// localhost:リスナポート/svn/...」に対してTortoiseやブラウザからアクセスすればよい。

研究室内部からはBasic認証のみだが、外部からはSSH+Basic認証が必要になる。

ファイルサーバにリポジトリを置く

木村研究室のファイルサーバはRAIDになっているので、ここにリポジトリを置きたい。 VisualSVNインストール時には、リポジトリはローカルディスクにしか設置できない。

リポジトリの場所を変更するのは簡単らしい。VisualSVN Serverを紹介していたページの書き込みに答えが書いてあった。それによれば、

  • VisualVSN起動
  • ツリー表示のVisualSVN Serverを選択
  • Properties...を開く
  • GeneralタブのRepositories Rootを変更

これでOKボタンを押せば、自動的にサーバの設定ファイル(httpd.conf)が変更され、Apacheの再起動が行われる。 ただし、リポジトリを設置する場所がApacheサービスのユーザからアクセス可能で無いとエラーが起こる。 設定後Apache再起動に失敗した場合、Apacheサービスを起動するユーザ(ログオンユーザ)が、リポジトリ設置場所のアクセス権を持つユーザと異なる可能性がある。試しに「サービス」設定の「ログオン」タブから、アカウントを自分の使っているものに変更してみたところ、Apacheが起動するようになった。

なお、独自のサーバ設定を行いたい場合はconfフォルダにある「httpd-custom.conf」に変更を加えること。「httpd.conf」からインクルードされており、再設定を行っても上書きされない。

用語

Checkout
リポジトリからファイルを取り出すこと。ローカルへリポジトリのファイルをコピーする。
Commit
ローカルへの変更をリポジトリへ反映すること。
Update
ローカルを変更中になされたリポジトリへの変更を、ローカルへ反映すること
Merge
衝突を解消すること。普通は手動で行う。

参考文献

  1. バージョン管理システム: Subversion
  2. Subversionサーババイナリディストリビューション: VisualSVN Server
  3. Subversionクライアント: Tortoise
  4. SVNBook非公式日本訳
  5. SVNBook日本語版その2
  6. svnserveをサービスとして起動
  7. svnserveの設定
  8. Subversion Memo
  9. リポジトリを外部に置く方法の書き込み
個人用ツール