Blog

Subversionのフォルダ構成

 2009/09/03
このエントリーをはてなブックマークに追加

みなさんこんにちは。@ryuzeeです。

かおるんさんがSubversion内のディレクトリの配置について悩んでいたようなので私見を書いてみたいと思います。

今まではルートの下に trunk、tags、brunches を置いて、その下に srouce とか documents とか tools とかってフォルダを置いていた。 でも基本 tag、brunch を切るのはソースだけだと思うので、ルートに srouce 、documents とか tools のフォルダを置いて、source の下に trunk、tags、brunches を置いたほうがやりやすいのかな??

多数の開発現場を見てきていますが、ソースの管理方法に比べるとドキュメントの管理方法はバラつきがあるように思えます。

個人的には、ルート配下にtrunk、tags、branchesを配置して、他のものは配置しない、に一票です

「タグやブランチを切るのがソースだけとは限らない」というのがその理由。

一例ですが、下記は僕が関わったあるプロジェクトのSubversionのディレクトリツリーです(適当にぼかしてます)。

C:\DEV\DeathMarch
├─branches
├─docs
│  ├─2002年度
│  │  ├─DB定義書
│  │  ├─HTML
│  │  ├─インフラ
│  │  ├─要件定義
│  │  ├─調査資料
│  ├─DB定義書
│  ├─その他
│  ├─新HTML
│  └─環境設定
├─sandbox
├─tags
└─trunk
    ├─install
    ├─share
    ├─tests
    └─var

branchesやsandboxやtrunkと同一階層にdocがあります。 そして、その中に2002年度というフォルダがあって、その中にdocs直下と似たような項目の文書が収められています(2003年度以降も同じ)。

さて問題です。

  • 2002年度フォルダの中の文書は必要な文書でしょうか?消すとどうなりますか?
  • 同じ文書名のファイルが他のフォルダにあった時、どっちが正しいでしょうか?
  • 2002年度の仕様をもとにしたソースはどれでしょうか?

答えは、「わからない」にしかなりません。

このような配置にしてしまうと、同一であろうものの連続性が担保できなくなり、どんどんカオスになっていきます。 この問題が起こった原因は、文書にも世代が存在しうることを無視して、ルートディレクトリに文書を配置してしまったからです。 これが、最初からtrunk以下に配置しておけば、ある年度の作業が終わったタイミングでタグを打つかブランチ分けしておくだけで、trunk側の一貫性は常に維持できていたはずです。

ここで僕が何を言いたいか、っていうと、2002年度の文書を削除して良いか?が全く分からない、ってことです…(T_T)。

それでは。

 2009/09/03
このエントリーをはてなブックマークに追加