1249447398 Subversionでの設定方法について相談です。


前回質問した時、Subversionを使ってファイル管理をする事を教えていただきました。
http://q.hatena.ne.jp/1248516554

基本的な使い方はわかるものの、私が目的とした設定にする方法がわかりません。
以下に詳しく記載しますので、設定方法や考え方を教えて下さい。

※画像のようなディレクトリ構成だとします。
・「admin」は管理画面用のファイルで、案件毎に内容が少し異なります。
・「plugin」はシステムに追加機能を与えるファイルが入っており、案件毎に利用させるものが異なります。
・「include」はシステム全体で利用する関数、クラスファイルです。
・「config.php」にDBの接続情報や設置先URLの情報があります。案件毎に異なる内容です。

環境はWindowsXPでTortoiseSVNを使っています。
情報が足りない場合は、コメント欄よりご指摘下さい。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/08/11 15:28:22
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:tdoi No.1

回答回数174ベストアンサー獲得回数75

ポイント100pt

案件ごとに異なる部分はそのまま対応するしかないとして、includeをいかに共有させるかというスタンスで回答します。

結論から言うと、subversionの外部参照を使います。

まず、共有するincludeを管理するリポジトリを作成します。

Common/include

その上で、案件ごとにリポジトリを作成します。

たとえば、次のような感じ。

ProjectA/admin
        /plugin
        /config.php
        /include

このときのProjectA/includeを外部参照にします。

こんな感じで指定します。

svn propset svn:externals 'include <Commonリポジトリのincludeを指定するURL>' ProjectA

参考:

http://d.hatena.ne.jp/tomodrop/20080404/1207293345


これれで、共有部分のリポジトリは1か所で管理できます。

pluginも一元管理をしたいのであれば、各プラグインがディレクトリで区切られている前提であれば、同様に外部参照で管理することも可能です。

Common/Plugins/pluginA
              /pluginB
              /pluginC

などと共有のリポジトリに作成し、

ProjectA/plugins/pluginA
                /pluginB

などを用意しておいて、

svn propset svn:externals 'pluginA <CommonリポジトリのpluingAを指定するURL>' plugins
svn propset svn:externals 'pluginB <CommonリポジトリのpluingBを指定するURL>' plugins

pluginCしかいらない別のプロジェクトでは、

svn propset svn:externals 'pluginC <CommonリポジトリのpluingCを指定するURL>' plugins

とすればOKです。


include、および、pluignsの中に修正があった場合は、各プロジェクトで、updateをかければ、更新されます。

また、特定のリビジョン指定でとめることもできるので、特定のプロジェクトは、pluginのアップデートをしないというような設定も可能です。


何かの参考になれば。

id:k28m

svn propset svn:externals 'pluginA <CommonリポジトリのpluingAを指定するURL>' plugins

のコマンドがうまく通りませんね・・。アクセスが拒否されます。(私のPCの問題でしょうが・・・)


参考URL先でTortoiseSVNで実行する方法(記事2番目の手順)も書いてあるのですが、右クリックをした後のメニューに [TortoiseSVN]-[Properties]-[Add]という項目もないし、手詰まりな状態です。


もう少し自身のPC環境を見直してみます。回答ありがとうございました。

2009/08/08 11:36:48
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

Subversion にはブランチとタグという機能がある。

タグ


案件毎にブランチを切っていけばよいと言う回答のつもりであったが。

ブランチの管理

id:k28m

それだけの回答ではわからないから方法を聞いているのですが。

2009/08/06 23:10:40
  • id:b-wind
    >それだけの回答ではわからないから方法を聞いているのですが。
    まず、リンク先は読みましたか?
    そのうち何が理解できて何が理解できないですか?
    ということが分かりませんと、説明しにくいです。すべてとなると膨大な量になりますから。

    私の回答では満足できそうにない。ということであれば特に返答はしなくてかまいません。
  • id:tdoi
    Subversionの基本的な使い方はわかるという前提で書いたのですが、
    タグとかブランチを理解されていないのであれば、外部参照とかは難しいですかね。

    回答の趣旨としては、タグとかブランチだと、プロジェクトごとに同じ修正を当てなければいけないので、それが煩雑というのが問題なのかと思って外部参照を提示したのですが。
  • id:k28m
    b-windさん

    tdoiさんの回答とあなたの回答を比べてみて下さい。もちろんリンク先は見ていますが、私の質問に対して合致する内容でしょうか。タグやブランチという単語は理解できても、私はSubversionに精通していないから設定方法(アイディア)を相談したのです。

    tdoiさん

    回答・コメントありがとうございます。現在、手探りで試しているところで、自分なりに上手く出来たら、回答をさせていただくところでした。
  • id:b-wind
    気に入らないなら無視してくれれば良いのに…。

    >私の質問に対して合致する内容でしょうか。
    前回の質問の流れとあわせれば合致していると考えている。
    アイデアの説明と具体的な設定方法の説明はそもそも違うものなので、自分はアイデアのみ提供ってとこですか。

    自分の回答スタイルとあなたの求めている内容にずれがあるのは確かでしょうね。
    長々と説明するのは自分的に好きではないので求められなければ詳細には書きません。
    求められればフォローぐらいはします。

    >Subversionに精通していないから
    そのような情報は質問時には無かったですね。
    書いておいてくれればもう少し別の方法も考えられたのですが。


  • id:tdoi
    > 参考URL先でTortoiseSVNで実行する方法(記事2番目の手順)も書いてあるのですが、右クリックをした後のメニューに [TortoiseSVN]-[Properties]-[Add]という項目もないし、手詰まりな状態です。

    おそらくリポジトリを作成されていないのだと思います。
    あるいは、importはしたものの、作業されているディレクトリがチェックアウトされたものではないかと思います。

    まずは、b-windさんが上げていらっしゃるような、基本的なSubversionの仕組みや、操作を理解して頂かないと、外部参照は難しいかもしれません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません