Subverionの実運用で気付いたこと

ドキュメントやソースコードの管理にSubversionを使用しているが、
実際に運用しはじめてみると、色々な気付きがあったのでメモしておく。

複数プロジェクトか単一プロジェクトか

複数プロジェクトを一つのリポジトリで管理するのか、1プロジェクト1リポジトリにするのかは、以下のようなメリット・デメリットがある。

まず、複数プロジェクトを単一リポジトリで管理する場合のメリットは、Apacheの再起動や、svnadminコマンドをいちいち発行しなくても良い点。
デメリット?は
・プロジェクトから見たら、リビジョン番号が歯抜けになる

これはどういうことかと言うと、例えばAプロジェクトとBプロジェクトの2つのプロジェクトを1リポジトリで管理している場合、
それぞれ一番最初のコミットでは、
Aプロジェクト — Revision 1
Bプロジェクト — Revision 2
という番号になるが、次にAプロジェクトをコミットした場合は、Revision 3となり、
Aプロジェクトだけを見ている人にとっては、Revision 1の次はRevision 3となり、じゃあRevision 2はどこ行ったのよ?
という風に見えてしまう。
まぁ、リビジョン番号なんてほぼ気にしないんじゃないかとも思うが、気にするお客さんの場合もありえる。

・SVNParentPathと実際のリポジトリの間のフォルダもリポジトリにしなくてはいけない

複数プロジェクトを登録する根幹フォルダとして、mod_dav_svnのSVNParentPathを指定することによって、その配下にリポジトリをどんどん追加出来るが、
その根幹フォルダの下に一つ、分類用フォルダを作成し、その下にプロジェクトを作成したい場合が多いんじゃないか?と思った。
例えば、取引先ごとにフォルダを作成し、実際のプロジェクトはその下に、という場合とか。
以下は、分類用フォルダにプロジェクトA~Cの3つを作成したい場合。

ROOT(SVNParentPathで指定)
┗分類用フォルダ
  ┗プロジェクト A
  ┗プロジェクト B
  ┗プロジェクト C
  
こんな場合、この「分類用フォルダ」もmkdirしただけではダメで、svnadmin createで作成しないと、SVNクライアントからのコマンド発行時に、「No such file or directory」と怒られてしまう。
しかし、svnadmin createでは管理等に使用する以下のようなファイル・ディレクトリが作成されてしまう。

-rw-r--r--  1 apache apache  229  814  2008 README.txt
drwxr-xr-x  2 apache apache 4096  814  2008 conf
drwxr-xr-x  2 apache apache 4096  814  2008 dav
drwxr-sr-x  5 apache apache 4096  98  2008 db
-r--r--r--  1 apache apache    2  814  2008 format
drwxr-xr-x  2 apache apache 4096  814  2008 hooks
drwxr-xr-x  2 apache apache 4096  814  2008 locks

ここにはファイルを登録しないのに、こんな余計なファイルが出来てブラウザ経由で見たら見えちゃうのも嫌な感じだ。
apacheのリポジトリみたいに出来れば良いのだけれど、こんなファイル群がないし、単一プロジェクトの方針なのかな・・・。

単一リポジトリで管理するメリットは、SVNParentPathと実プロジェクトの間にリポジトリじゃないフォルダを作成出来るし、「conf」等のSVNが使用するファイル・ディレクトリも作成されない。つまり前述の逆だ。
デメリットも同じで、svnadminコマンドの発行とhttpd.confの修正とApacheの再起動が必要。

このデメリットはよくよく考えてみると別にデメリットでもないのかも。
プロジェクトが新たに作成されるという場合は、その規模にもよるかもしれないけど大規模なイベントなはずで、
それが追加されることはそう滅多にない。なので、Apacheを再起動するくらいの作業は必要なんじゃないかと。

こう考えると、1リポジトリ-1プロジェクトの運用のが良いんじゃないかと考えた。


Leave a Reply