nDiki

2005年1月31日 (月)

外部定義か作業ディレクトリを分けるか、trunk にブランチ

Subversion のリポジトリのレイアウトを思案中。

 repos
  |
  +- branches
  |
  +- tags
  |
  +- trunk
      |
      +- project
      |    |
      |    +- 2004
      |    |
      |    +- 2005
      |
      +- texmf

という構成がある。 project に年別のサブブロジェクト 2004、2005 がある。 texmf は repos 以下で共有したいマクロディレクトリ。

問題は各サブプロジェクトでどうやって texmf を共有するか。 ここで 2005 + texmf を使用する際には 2004 まで一緒に作業ディレクトリにチェックアウトしたくないとする。 texmf は各プロジェクトの共通部分で随時改良される。 これらの改良は各プロジェクトで共有したい。

ただしプロジェクトの tag を打つ場合はその時点で使用されている texmf もセットで tag を打っておき、その tag をチェックアウトする事でサブプロジェクトのセットを再構築できる必要がある。

作業ディレクトリを2つチェックアウトする方法

 trunk/project/2005
 trunk/texmf

の2つをチェックアウトする。2005 ディレクトリからは ../../texmf で参照するようにする。

利点
  • texmf を一括管理できる。
欠点
  • 作業者が2つの作業ディレクトリをこの構成でチェックアウトすることを知っている必要がある。間違えて違うURLをチェックアウトしてしまうかもしれない。
  • 更新も毎回2つのディレクトリでする必要がある。texmf の update 忘れる等のミスをおかしやすい。

tag を打つ場合は

 tags/release-1.0.0/project/2005
 tags/release-1.0.0/texmf

と2つをとりまとめる必要がある。

サブプロジェクトにブランチを作る方法

texmf を trunk/project/2005/texmf のようにコピーする。

 trunk
  |
  +- project
       |
       +- 2005
           |
           +- texmf

2005 ディレクトリからは texmf で参照するようにする。

利点
  • チェックアウトする人間は trunk/project/2005 をチェックアウトするだけで良い(texmf サブディレクトリは再帰的にチェックアウトされる)。
  • trunk/project/2005 の tag を作るだけで、閉じたスナップショットを作れる。
  • texmf が他のプロジェクトと独立する。
欠点
  • trunk/project/2005/texmf から trunk/texmf へのマージ、また逆へのマージを適宜行って同期しておく必要がある。骨が折れる。
  • trunk の下にブランチ的な要素があるのがちょっと気持ち悪い。

外部定義(svn:externals)を使う方法

trunk/project/2005 の svn:externals 属性として trunk/texmf のURLを指定し trunk/project/2005/texmf となるようにする。

利点
  • チェックアプトする人間は trunk/project/2005 をチェックアウトするだけで良い(texmf 外部定義は自動的にチェックアウトされる)。
  • texmf を一括管理できる。
欠点
  • texmf 以下は別として扱われるので、更新処理などのオーバーヘッドが結構ある(遅い)。
  • tag 打ちが面倒

tag を打つ際は

 tags/release-1.0.0/project/2005
 tags/release-1.0.0/texmf

と2つをとりまとめた上、tags/release-1.0.0/project/2005 の svn:externalsURLを書き換える必要がある。

将来リポジトリが移動してURLが変わった際も(実体は同じリポジトリにあるにもかかわらず)全てのURLを書き換える必要がある。

あるいは tag を打つ際に svn:externals をクリアし tags/release-1.0.0/project/texmf とコピーする方法もある。

どれにするか?

去年は外部定義を使用する方法で運用してみたが、update が遅い等それほど使い勝手が良くなかった。

今回はブランチ方式にしようかなと思う。 マージが面倒なようなら、次回は一番上の方式で。

スポンサード リンク
[ 1月31日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.113109s / load averages: 0.39, 0.57, 0.48
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker